## JsonBuilder JsonBuilder — Generates JSON trees |

## Synopsis

    struct              JsonBuilder;
    struct              JsonBuilderClass;
    JsonBuilder *       json_builder_new                    (void);
    JsonNode *          json_builder_get_root               (JsonBuilder *builder);
    void                json_builder_reset                  (JsonBuilder *builder);

    JsonBuilder *       json_builder_begin_array            (JsonBuilder *builder);
    JsonBuilder *       json_builder_end_array              (JsonBuilder *builder);
    JsonBuilder *       json_builder_begin_object           (JsonBuilder *builder);
    JsonBuilder *       json_builder_set_member_name        (JsonBuilder *builder,
                                                             const gchar *member_name);
    JsonBuilder *       json_builder_end_object             (JsonBuilder *builder);

    JsonBuilder *       json_builder_add_value              (JsonBuilder *builder,
                                                             JsonNode *node);
    JsonBuilder *       json_builder_add_int_value          (JsonBuilder *builder,
                                                             gint64 value);
    JsonBuilder *       json_builder_add_double_value       (JsonBuilder *builder,
                                                             gdouble value);
    JsonBuilder *       json_builder_add_boolean_value      (JsonBuilder *builder,
                                                             gboolean value);
    JsonBuilder *       json_builder_add_string_value       (JsonBuilder *builder,
                                                             const gchar *value);
    JsonBuilder *       json_builder_add_null_value         (JsonBuilder *builder);

## Object Hierarchy

      GObject
       +----JsonBuilder

## Description

JsonBuilder provides an object for generating a JSON tree. You can generate only one tree with one JsonBuilder instance.

The root of the JSON tree can be either a JsonObject or a JsonArray. Thus the first call must necessarily be either `json_builder_begin_object()` or `json_builder_begin_array()`.

For convenience to language bindings, JsonBuilder returns itself from most of functions, making it easy to chain function calls.

## Details

### struct JsonBuilder

    struct JsonBuilder;

The JsonBuilder structure contains only private data and shouls be accessed using the provided API

Since 0.12

### struct JsonBuilderClass

    struct JsonBuilderClass {
    };

The JsonBuilder structure contains only private data

Since 0.12

### json_builder_new ()

    JsonBuilder *       json_builder_new                    (void);

Creates a new JsonBuilder. You can use this object to generate a JSON tree and obtain the root JsonNodes.

Returns : | the newly created JsonBuilder instance

### json_builder_get_root ()

    JsonNode *          json_builder_get_root               (JsonBuilder *builder);

Returns the root of the current constructed tree, if the build is complete (ie: all opened objects, object members and arrays are being closed).

`builder` : | a JsonBuilder
Returns : | the JsonNode, or `NULL` if the build is not complete. Free the returned value with `json_node_free()`. [transfer full]

### json_builder_reset ()

    void                json_builder_reset                  (JsonBuilder *builder);

Resets the state of the `builder` back to its initial state.

`builder` : | a JsonBuilder

### json_builder_begin_array ()

    JsonBuilder *       json_builder_begin_array            (JsonBuilder *builder);

Opens a subarray inside the given `builder`. When done adding members to the subarray, `json_builder_end_array()` must be called.

Can be called for first or only if the call is associated to an object member or an array element.

`builder` : | a JsonBuilder
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_end_array ()

    JsonBuilder *       json_builder_end_array              (JsonBuilder *builder);

Closes the subarray inside the given `builder` that was opened by the most recent call to `json_builder_begin_array()`.

Cannot be called after `json_builder_set_member_name()`.

`builder` : | a JsonBuilder
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_begin_object ()

    JsonBuilder *       json_builder_begin_object           (JsonBuilder *builder);

Opens a subobject inside the given `builder`. When done adding members to the subobject, `json_builder_end_object()` must be called.

Can be called for first or only if the call is associated to an object member or an array element.

`builder` : | a JsonBuilder
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_set_member_name ()

    JsonBuilder *       json_builder_set_member_name        (JsonBuilder *builder,
                                                             const gchar *member_name);

Set the name of the next member in an object. The next call must add a value, open an object or an array.

Can be called only if the call is associated to an object.

`builder` : | a JsonBuilder
`member_name` : | the name of the member
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_end_object ()

    JsonBuilder *       json_builder_end_object             (JsonBuilder *builder);

Closes the subobject inside the given `builder` that was opened by the most recent call to `json_builder_begin_object()`.

Cannot be called after `json_builder_set_member_name()`.

`builder` : | a JsonBuilder
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_add_value ()

    JsonBuilder *       json_builder_add_value              (JsonBuilder *builder,
                                                             JsonNode *node);

If called after `json_builder_set_member_name()`, sets `node` as member of the most recent opened object, otherwise `node` is added as element of the most recent opened array.

`builder` : | a JsonBuilder
`node` : | the value of the member or element
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_add_int_value ()

    JsonBuilder *       json_builder_add_int_value          (JsonBuilder *builder,
                                                             gint64 value);

If called after `json_builder_set_member_name()`, sets `value` as member of the most recent opened object, otherwise `value` is added as element of the most recent opened array.

See also: `json_builder_add_value()`

`builder` : | a JsonBuilder
`value` : | the value of the member or element
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_add_double_value ()

    JsonBuilder *       json_builder_add_double_value       (JsonBuilder *builder,
                                                             gdouble value);

If called after `json_builder_set_member_name()`, sets `value` as member of the most recent opened object, otherwise `value` is added as element of the most recent opened array.

See also: `json_builder_add_value()`

`builder` : | a JsonBuilder
`value` : | the value of the member or element
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_add_boolean_value ()

    JsonBuilder *       json_builder_add_boolean_value      (JsonBuilder *builder,
                                                             gboolean value);

If called after `json_builder_set_member_name()`, sets `value` as member of the most recent opened object, otherwise `value` is added as element of the most recent opened array.

See also: `json_builder_add_value()`

`builder` : | a JsonBuilder
`value` : | the value of the member or element
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_add_string_value ()

    JsonBuilder *       json_builder_add_string_value       (JsonBuilder *builder,
                                                             const gchar *value);

If called after `json_builder_set_member_name()`, sets `value` as member of the most recent opened object, otherwise `value` is added as element of the most recent opened array.

See also: `json_builder_add_value()`

`builder` : | a JsonBuilder
`value` : | the value of the member or element
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

### json_builder_add_null_value ()

    JsonBuilder *       json_builder_add_null_value         (JsonBuilder *builder);

If called after `json_builder_set_member_name()`, sets null as member of the most recent opened object, otherwise null is added as element of the most recent opened array.

See also: `json_builder_add_value()`

`builder` : | a JsonBuilder
Returns : | the JsonBuilder, or `NULL` if the call was inconsistent. [transfer none]

## See Also

JsonGenerator