Serializing GVariants
Serializing GVariants
GVariant is a serialization format mainly used as the wire data for D-Bus,
as well as storing values in GSettings. JSON-GLib provides utility functions
to serialize and deserialize GVariant data to and from JSON.
Use json_gvariant_serialize() and json_gvariant_serialize_data() to
convert from any GVariant value to a JsonNode tree or its string representation.
Use json_gvariant_deserialize() and json_gvariant_deserialize_data()
to obtain the GVariant value from a JsonNode tree or directly from a JSON string.
Since many GVariant data types cannot be directly represented as
JSON, a GVariant type string (signature) should be provided to these
methods in order to obtain a correct, type-contrained result.
If no signature is provided, conversion can still be done, but the
resulting GVariant value will be “guessed” from the JSON data types
using the following rules:
Strings:
A JSON string maps to a GVariant string (s).
Integers:
A JSON integer maps to a GVariant 64-bit integer (x).
Booleans:
A JSON boolean maps to a GVariant boolean (b).
Numbers:
A JSON number maps to a GVariant double (d).
Arrays:
A JSON array maps to a GVariant array of variants (av).
Objects:
A JSON object maps to a GVariant dictionary of string to variants (a{sv}).
NULL values:
A JSON null value maps to a GVariant “maybe” variant (mv).