Serializable Interface

Serializable Interface — Interface for serialize and deserialize special GObjects

Synopsis

                    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);

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);

Description

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.

Details

JsonSerializableIface

typedef struct {
  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);
} JsonSerializableIface;

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.

serialize_property ()

virtual function for serializing a GObject property into a JsonNode

deserialize_property ()

virtual function for deserializing a JsonNode into a GObject property

json_serializable_serialize_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.

serializable :

a JsonSerializable object

property_name :

the name of the property

value :

the value of the property

pspec :

a GParamSpec

Returns :

a JsonNode containing the serialized property

json_serializable_deserialize_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.

serializable :

a JsonSerializable

property_name :

the name of the property

value :

a pointer to an uninitialized GValue

pspec :

a GParamSpec

property_node :

a JsonNode containing the serialized property

Returns :

TRUE if the property was successfully deserialized.

json_serializable_default_serialize_property ()

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:

  JsonSerializable *iface;
  JsonNode *node;

  iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
  node = iface->serialize_property (serializable, property_name,
                                    value,
                                    pspec);

serializable :

a JsonSerializable object

property_name :

the name of the property

value :

the value of the property

pspec :

a GParamSpec

Returns :

transfer full. transfer full.

Since 0.10


json_serializable_default_deserialize_property ()

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:

  JsonSerializable *iface;
  gboolean res;

  iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
  res = iface->deserialize_property (serializable, property_name,
                                     value,
                                     pspec,
                                     property_node);

serializable :

a JsonSerializable

property_name :

the name of the property

value :

a pointer to an uninitialized GValue

pspec :

a GParamSpec

property_node :

a JsonNode containing the serialized property

Returns :

TRUE if the property was successfully deserialized.

Since 0.10