## GObject Serialization

GObject Serialization — Serialize and deserialize GObjects

## Synopsis

    JsonNode *          json_gobject_serialize              (GObject *gobject);
    GObject *           json_gobject_deserialize            (GType gtype,
                                                             JsonNode *node);
    gchar *             json_gobject_to_data                (GObject *gobject,
                                                             gsize *length);
    GObject *           json_gobject_from_data              (GType gtype,
                                                             const gchar *data,
                                                             gssize length,
                                                             GError **error);

    GObject *           json_construct_gobject              (GType gtype,
                                                             const gchar *data,
                                                             gsize length,
                                                             GError **error);
    gchar *             json_serialize_gobject              (GObject *gobject,
                                                             gsize *length);

## Description

JSON-GLib provides API for serializing and deserializing GObjects to and from JSON data streams.

Simple GObject classes can be (de)serialized into JSON objects, if the properties have compatible types with the native JSON types (integers, booleans, strings, string vectors). If the class to be (de)serialized has complex data types for properties (like boxed types or other objects) then the class should implement the provided JsonSerializable interface and its virtual functions.

## Details

### json_gobject_serialize ()

    JsonNode *          json_gobject_serialize              (GObject *gobject);

Creates a JsonNode representing the passed GObject instance. Each member of the returned JSON object will map to a property of the GObject

`gobject` : | a GObject
Returns : | transfer full. transfer full.

Since 0.10

### json_gobject_deserialize ()

    GObject *           json_gobject_deserialize            (GType gtype,
                                                             JsonNode *node);

Creates a new GObject of type `gtype`, and constructs it using the members of the passed JsonObject

`gtype` : | the type of the GObject to create
`node` : | a JsonNode of type `JSON_NODE_OBJECT` describing the instance of type `gtype`
Returns : | transfer full. transfer full.

Since 0.10

### json_gobject_to_data ()

    gchar *             json_gobject_to_data                (GObject *gobject,
                                                             gsize *length);

Serializes a GObject into a JSON data stream, iterating recursively over each property.

If `gobject` implements the JsonSerializableIface interface, it will be asked to serialize all its properties; otherwise, the default implementation will be use to translate the compatible types into JSON native types.

`gobject` : | a GObject
`length` : | return value for the length of the buffer, or `NULL`. out.
Returns : | a JSON data stream representing the passed GObject

Since 0.10

### json_gobject_from_data ()

    GObject *           json_gobject_from_data              (GType gtype,
                                                             const gchar *data,
                                                             gssize length,
                                                             GError **error);

Deserializes a JSON data stream and creates the corresponding GObject class. If `gtype` implements the JsonSerializableIface interface, it will be asked to deserialize all the JSON members into the respective properties; otherwise, the default implementation will be used to translate the compatible JSON native types.

Note: the JSON data stream must be an object declaration.

`gtype` : | the GType of object to construct
`data` : | a JSON data stream
`length` : | length of the data stream, or -1 if it is NUL-terminated
`error` : | return location for a GError, or `NULL`
Returns : | a GObject or `NULL`

Since 0.10

### json_construct_gobject ()

    GObject *           json_construct_gobject              (GType gtype,
                                                             const gchar *data,
                                                             gsize length,
                                                             GError **error);

### Warning

`json_construct_gobject` has been deprecated since version 0.10 and should not be used in newly-written code. Use `json_gobject_from_data()` instead

Deserializes a JSON data stream and creates the corresponding GObject class. If `gtype` implements the JsonSerializableIface interface, it will be asked to deserialize all the JSON members into the respective properties; otherwise, the default implementation will be used to translate the compatible JSON native types.

Note: the JSON data stream must be an object declaration.

`gtype` : | the GType of object to construct
`data` : | a JSON data stream
`length` : | length of the data stream
`error` : | return location for a GError, or `NULL`
Returns : | a GObject or `NULL`

Since 0.4

### json_serialize_gobject ()

    gchar *             json_serialize_gobject              (GObject *gobject,
                                                             gsize *length);

### Warning

`json_serialize_gobject` has been deprecated since version 0.10 and should not be used in newly-written code. Use `json_gobject_to_data()` instead

Serializes a GObject into a JSON data stream. If `gobject` implements the JsonSerializableIface interface, it will be asked to serizalize all its properties; otherwise, the default implementation will be use to translate the compatible types into JSON native types.

`gobject` : | a GObject
`length` : | return value for the length of the buffer, or `NULL`. out.
Returns : | a JSON data stream representing the passed GObject