| JSON-GLib Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | ||||
Serializable InterfaceSerializable Interface — Interface for serialize and deserialize special GObjects |
struct JsonSerializableIface; JsonNode * json_serializable_serialize_property (JsonSerializable *serializable,const gchar *property_name,const GValue *value,GParamSpec *pspec); gboolean json_serializable_deserialize_property (JsonSerializable *serializable,const gchar *property_name,GValue *value,GParamSpec *pspec,JsonNode *property_node); GParamSpec * json_serializable_find_property (JsonSerializable *serializable,const char *name); void json_serializable_get_property (JsonSerializable *serializable,GParamSpec *pspec,GValue *value); GParamSpec ** json_serializable_list_properties (JsonSerializable *serializable,guint *n_pspecs); void json_serializable_set_property (JsonSerializable *serializable,GParamSpec *pspec,const GValue *value); JsonNode * json_serializable_default_serialize_property (JsonSerializable *serializable,const gchar *property_name,const GValue *value,GParamSpec *pspec); gboolean json_serializable_default_deserialize_property (JsonSerializable *serializable,const gchar *property_name,GValue *value,GParamSpec *pspec,JsonNode *property_node);
JsonSerializable is an interface for GObject classes that
allows controlling how the class is going to be serialized
or deserialized by json_construct_gobject() and
json_serialize_gobject() respectively.
struct JsonSerializableIface {
JsonNode *(* serialize_property) (JsonSerializable *serializable,
const gchar *property_name,
const GValue *value,
GParamSpec *pspec);
gboolean (* deserialize_property) (JsonSerializable *serializable,
const gchar *property_name,
GValue *value,
GParamSpec *pspec,
JsonNode *property_node);
GParamSpec * (* find_property) (JsonSerializable *serializable,
const char *name);
GParamSpec **(* list_properties) (JsonSerializable *serializable,
guint *n_pspecs);
void (* set_property) (JsonSerializable *serializable,
GParamSpec *pspec,
const GValue *value);
void (* get_property) (JsonSerializable *serializable,
GParamSpec *pspec,
GValue *value);
};
Interface that allows serializing and deserializing GObjects
with properties storing complex data types. The json_serialize_gobject()
function will check if the passed GObject implements this interface,
so it can also be used to override the default property serialization
sequence.
| virtual function for serializing a GObject property into a JsonNode | |
| virtual function for deserializing a JsonNode into a GObject property | |
| virtual function for finding a property definition using its name | |
| virtual function for listing the installed property definitions | |
| virtual function for setting a property | |
| virtual function for getting a property |
JsonNode * json_serializable_serialize_property (JsonSerializable *serializable,const gchar *property_name,const GValue *value,GParamSpec *pspec);
Asks a JsonSerializable implementation to serialize a GObject property into a JsonNode object.
|
a JsonSerializable object |
|
the name of the property |
|
the value of the property |
|
a GParamSpec |
Returns : |
a JsonNode containing the serialized property |
gboolean json_serializable_deserialize_property (JsonSerializable *serializable,const gchar *property_name,GValue *value,GParamSpec *pspec,JsonNode *property_node);
Asks a JsonSerializable implementation to deserialize the
property contained inside property_node into value.
|
a JsonSerializable |
|
the name of the property |
|
a pointer to an uninitialized GValue. [out] |
|
a GParamSpec |
|
a JsonNode containing the serialized property |
Returns : |
TRUE if the property was successfully deserialized. |
GParamSpec * json_serializable_find_property (JsonSerializable *serializable,const char *name);
FIXME
|
a JsonSerializable |
|
the name of the property |
Returns : |
the GParamSpec for the property
or NULL if no property was found. [transfer none]
|
Since 0.14
void json_serializable_get_property (JsonSerializable *serializable,GParamSpec *pspec,GValue *value);
GParamSpec ** json_serializable_list_properties (JsonSerializable *serializable,guint *n_pspecs);
FIXME
|
a JsonSerializable |
|
return location for the length of the array of GParamSpec returned by the function. [out] |
Returns : |
an array
of GParamSpec. Use g_free() to free the array when done. [array length=n_pspecs][transfer container]
|
Since 0.14
void json_serializable_set_property (JsonSerializable *serializable,GParamSpec *pspec,const GValue *value);
JsonNode * json_serializable_default_serialize_property (JsonSerializable *serializable,const gchar *property_name,const GValue *value,GParamSpec *pspec);
Calls the default implementation of the JsonSerializable
serialize_property() virtual function
This function can be used inside a custom implementation
of the serialize_property() virtual function in lieu of:
1 2 3 4 5 6 7 |
JsonSerializable *iface; JsonNode *node; iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE); node = iface->serialize_property (serializable, property_name, value, pspec); |
|
a JsonSerializable object |
|
the name of the property |
|
the value of the property |
|
a GParamSpec |
Returns : |
a JsonNode containing the serialized property. [transfer full] |
Since 0.10
gboolean json_serializable_default_deserialize_property (JsonSerializable *serializable,const gchar *property_name,GValue *value,GParamSpec *pspec,JsonNode *property_node);
Calls the default implementation of the JsonSerializable
deserialize_property() virtual function
This function can be used inside a custom implementation
of the deserialize_property() virtual function in lieu of:
1 2 3 4 5 6 7 8 |
JsonSerializable *iface; gboolean res; iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE); res = iface->deserialize_property (serializable, property_name, value, pspec, property_node); |
|
a JsonSerializable |
|
the name of the property |
|
a pointer to an uninitialized GValue |
|
a GParamSpec |
|
a JsonNode containing the serialized property |
Returns : |
TRUE if the property was successfully deserialized. |
Since 0.10