|  |  |  | JSON-GLib Reference Manual |  | 
|---|---|---|---|---|
| Top | Description | ||||
enum JsonNodeType; JsonNode; #define JSON_NODE_TYPE (node) #define JSON_NODE_HOLDS (node, t) #define JSON_NODE_HOLDS_VALUE (node) #define JSON_NODE_HOLDS_OBJECT (node) #define JSON_NODE_HOLDS_ARRAY (node) #define JSON_NODE_HOLDS_NULL (node) JsonNode * json_node_alloc (void); JsonNode * json_node_init (JsonNode *node,JsonNodeType type); JsonNode * json_node_init_int (JsonNode *node,gint64 value); JsonNode * json_node_init_double (JsonNode *node,gdouble value); JsonNode * json_node_init_boolean (JsonNode *node,gboolean value); JsonNode * json_node_init_string (JsonNode *node,const char *value); JsonNode * json_node_init_null (JsonNode *node); JsonNode * json_node_init_object (JsonNode *node,JsonObject *object); JsonNode * json_node_init_array (JsonNode *node,JsonArray *array); JsonNode * json_node_new (JsonNodeType type); JsonNode * json_node_copy (JsonNode *node); void json_node_free (JsonNode *node); void json_node_set_array (JsonNode *node,JsonArray *array); void json_node_take_array (JsonNode *node,JsonArray *array); JsonArray * json_node_get_array (JsonNode *node); JsonArray * json_node_dup_array (JsonNode *node); void json_node_set_object (JsonNode *node,JsonObject *object); void json_node_take_object (JsonNode *node,JsonObject *object); JsonObject * json_node_get_object (JsonNode *node); JsonObject * json_node_dup_object (JsonNode *node); void json_node_set_value (JsonNode *node,const GValue *value); void json_node_get_value (JsonNode *node,GValue *value); void json_node_set_boolean (JsonNode *node,gboolean value); gboolean json_node_get_boolean (JsonNode *node); void json_node_set_double (JsonNode *node,gdouble value); gdouble json_node_get_double (JsonNode *node); void json_node_set_int (JsonNode *node,gint64 value); gint64 json_node_get_int (JsonNode *node); void json_node_set_string (JsonNode *node,const gchar *value); const gchar * json_node_get_string (JsonNode *node); gchar * json_node_dup_string (JsonNode *node); void json_node_set_parent (JsonNode *node,JsonNode *parent); JsonNode * json_node_get_parent (JsonNode *node); const gchar * json_node_type_name (JsonNode *node); GType json_node_get_value_type (JsonNode *node); JsonNodeType json_node_get_node_type (JsonNode *node); gboolean json_node_is_null (JsonNode *node);
A JsonNode is a generic container of elements inside a JSON stream. It can contain fundamental types (integers, booleans, floating point numbers, strings) and complex types (arrays and objects).
When parsing a JSON data stream you extract the root node and walk
the node tree by retrieving the type of data contained inside the
node with the JSON_NODE_TYPE macro. If the node contains a fundamental
type you can retrieve a copy of the GValue holding it with the
json_node_get_value() function, and then use the GValue API to extract
the data; if the node contains a complex type you can retrieve the
JsonObject or the JsonArray using json_node_get_object() or
json_node_get_array() respectively, and then retrieve the nodes
they contain.
typedef enum {
  JSON_NODE_OBJECT,
  JSON_NODE_ARRAY,
  JSON_NODE_VALUE,
  JSON_NODE_NULL
} JsonNodeType;
Indicates the content of a JsonNode.
| The node contains a JsonObject | |
| The node contains a JsonArray | |
| The node contains a fundamental type | |
| Special type, for nodes containing null | 
typedef struct _JsonNode JsonNode;
A generic container of JSON data types. The contents of the JsonNode structure are private and should only be accessed via the provided functions and never directly.
#define JSON_NODE_TYPE(node) (json_node_get_node_type ((node)))
Evaluates to the JsonNodeType contained by node
| 
 | a JsonNode | 
#define JSON_NODE_HOLDS(node,t) (json_node_get_node_type ((node)) == (t))
Evaluates to TRUE if the node holds type t
| 
 | a JsonNode | 
| 
 | a JsonNodeType | 
Since 0.10
#define JSON_NODE_HOLDS_VALUE(node) (JSON_NODE_HOLDS ((node), JSON_NODE_VALUE))
Evaluates to TRUE if node holds a JSON_NODE_VALUE
| 
 | a JsonNode | 
Since 0.10
#define JSON_NODE_HOLDS_OBJECT(node) (JSON_NODE_HOLDS ((node), JSON_NODE_OBJECT))
Evaluates to TRUE if node holds a JSON_NODE_OBJECT
| 
 | a JsonNode | 
Since 0.10
#define JSON_NODE_HOLDS_ARRAY(node) (JSON_NODE_HOLDS ((node), JSON_NODE_ARRAY))
Evaluates to TRUE if node holds a JSON_NODE_ARRAY
| 
 | a JsonNode | 
Since 0.10
#define JSON_NODE_HOLDS_NULL(node) (JSON_NODE_HOLDS ((node), JSON_NODE_NULL))
Evaluates to TRUE if node holds a JSON_NODE_NULL
| 
 | a JsonNode | 
Since 0.10
JsonNode *          json_node_alloc                     (void);
Allocates a new JsonNode. Use json_node_init() and its variants
to initialize the returned value.
| Returns : | the newly allocated JsonNode. Use json_node_free()to free the resources allocated by this function. [transfer full] | 
Since 0.16
JsonNode * json_node_init (JsonNode *node,JsonNodeType type);
Initializes a node to a specific type.
If the node has already been initialized once, it will be reset to the given type, and any data contained will be cleared.
| 
 | the JsonNode to initialize | 
| 
 | the type of JSON node to initialize nodeto | 
| Returns : | the initialized JsonNode. [transfer none] | 
Since 0.16
JsonNode * json_node_init_int (JsonNode *node,gint64 value);
Initializes node to JSON_NODE_VALUE and sets value into it.
If the node has already been initialized once, it will be reset to the given type, and any data contained will be cleared.
| 
 | the JsonNode to initialize | 
| 
 | an integer | 
| Returns : | the initialized JsonNode. [transfer none] | 
Since 0.16
JsonNode * json_node_init_double (JsonNode *node,gdouble value);
Initializes node to JSON_NODE_VALUE and sets value into it.
If the node has already been initialized once, it will be reset to the given type, and any data contained will be cleared.
| 
 | the JsonNode to initialize | 
| 
 | a floating point value | 
| Returns : | the initialized JsonNode. [transfer none] | 
Since 0.16
JsonNode * json_node_init_boolean (JsonNode *node,gboolean value);
Initializes node to JSON_NODE_VALUE and sets value into it.
If the node has already been initialized once, it will be reset to the given type, and any data contained will be cleared.
| 
 | the JsonNode to initialize | 
| 
 | a boolean value | 
| Returns : | the initialized JsonNode. [transfer none] | 
Since 0.16
JsonNode * json_node_init_string (JsonNode *node,const char *value);
Initializes node to JSON_NODE_VALUE and sets value into it.
If the node has already been initialized once, it will be reset to the given type, and any data contained will be cleared.
| 
 | the JsonNode to initialize | 
| 
 | a string value. [allow-none] | 
| Returns : | the initialized JsonNode. [transfer none] | 
Since 0.16
JsonNode *          json_node_init_null                 (JsonNode *node);
Initializes node to JSON_NODE_NULL.
If the node has already been initialized once, it will be reset to the given type, and any data contained will be cleared.
Since 0.16
JsonNode * json_node_init_object (JsonNode *node,JsonObject *object);
Initializes node to JSON_NODE_OBJECT and sets object into it.
This function will take a reference on object.
If the node has already been initialized once, it will be reset to the given type, and any data contained will be cleared.
| 
 | the JsonNode to initialize | 
| 
 | the JsonObject to initialize nodewith, orNULL. [allow-none] | 
| Returns : | the initialized JsonNode. [transfer none] | 
Since 0.16
JsonNode * json_node_init_array (JsonNode *node,JsonArray *array);
Initializes node to JSON_NODE_ARRAY and sets array into it.
This function will take a reference on array.
If the node has already been initialized once, it will be reset to the given type, and any data contained will be cleared.
| 
 | the JsonNode to initialize | 
| 
 | the JsonArray to initialize nodewith, orNULL. [allow-none] | 
| Returns : | the initialized JsonNode. [transfer none] | 
Since 0.16
JsonNode *          json_node_new                       (JsonNodeType type);
Creates a new JsonNode of type.
This is a convenience function for json_node_alloc() and json_node_init(),
and it's the equivalent of:
| 1 | return json_node_init (json_node_alloc (), type); | 
| 
 | a JsonNodeType | 
| Returns : | the newly created JsonNode | 
JsonNode *          json_node_copy                      (JsonNode *node);
Copies node. If the node contains complex data types then the reference
count of the objects is increased.
void                json_node_free                      (JsonNode *node);
Frees the resources allocated by node.
| 
 | a JsonNode | 
void json_node_set_array (JsonNode *node,JsonArray *array);
Sets array inside node and increases the JsonArray reference count
| 
 | a JsonNode initialized to JSON_NODE_ARRAY | 
| 
 | a JsonArray | 
void json_node_take_array (JsonNode *node,JsonArray *array);
Sets array into node without increasing the JsonArray reference count.
| 
 | a JsonNode initialized to JSON_NODE_ARRAY | 
| 
 | a JsonArray. [transfer full] | 
JsonArray *         json_node_dup_array                 (JsonNode *node);
Retrieves the JsonArray stored inside a JsonNode and returns it with its reference count increased by one.
void json_node_set_object (JsonNode *node,JsonObject *object);
Sets objects inside node. The reference count of object is increased.
| 
 | a JsonNode initialized to JSON_NODE_OBJECT | 
| 
 | a JsonObject | 
void json_node_take_object (JsonNode *node,JsonObject *object);
Sets object inside node. The reference count of object is not increased.
| 
 | a JsonNode initialized to JSON_NODE_OBJECT | 
| 
 | a JsonObject. [transfer full] | 
JsonObject *        json_node_get_object                (JsonNode *node);
Retrieves the JsonObject stored inside a JsonNode
| 
 | a JsonNode | 
| Returns : | the JsonObject. [transfer none] | 
JsonObject *        json_node_dup_object                (JsonNode *node);
Retrieves the JsonObject inside node. The reference count of
the returned object is increased.
| 
 | a JsonNode | 
| Returns : | the JsonObject. [transfer full] | 
void json_node_set_value (JsonNode *node,const GValue *value);
Sets value inside node. The passed GValue is copied into the JsonNode
| 
 | a JsonNode initialized to JSON_NODE_VALUE | 
| 
 | the GValue to set | 
void json_node_get_value (JsonNode *node,GValue *value);
Retrieves a value from a JsonNode and copies into value. When done
using it, call g_value_unset() on the GValue.
| 
 | a JsonNode | 
| 
 | return location for an uninitialized value. [out caller-allocates] | 
void json_node_set_boolean (JsonNode *node,gboolean value);
Sets value as the boolean content of the node, replacing any existing
content.
| 
 | a JsonNode of type JSON_NODE_VALUE | 
| 
 | a boolean value | 
gboolean            json_node_get_boolean               (JsonNode *node);
Gets the boolean value stored inside a JsonNode
| 
 | a JsonNode of type JSON_NODE_VALUE | 
| Returns : | a boolean value. | 
void json_node_set_double (JsonNode *node,gdouble value);
Sets value as the double content of the node, replacing any existing
content.
| 
 | a JsonNode of type JSON_NODE_VALUE | 
| 
 | a double value | 
gdouble             json_node_get_double                (JsonNode *node);
Gets the double value stored inside a JsonNode
| 
 | a JsonNode of type JSON_NODE_VALUE | 
| Returns : | a double value. | 
void json_node_set_int (JsonNode *node,gint64 value);
Sets value as the integer content of the node, replacing any existing
content.
| 
 | a JsonNode of type JSON_NODE_VALUE | 
| 
 | an integer value | 
gint64              json_node_get_int                   (JsonNode *node);
Gets the integer value stored inside a JsonNode
| 
 | a JsonNode of type JSON_NODE_VALUE | 
| Returns : | an integer value. | 
void json_node_set_string (JsonNode *node,const gchar *value);
Sets value as the string content of the node, replacing any existing
content.
| 
 | a JsonNode initialized to JSON_NODE_VALUE | 
| 
 | a string value | 
const gchar *       json_node_get_string                (JsonNode *node);
Gets the string value stored inside a JsonNode
| 
 | a JsonNode of type JSON_NODE_VALUE | 
| Returns : | a string value. | 
gchar *             json_node_dup_string                (JsonNode *node);
Gets a copy of the string value stored inside a JsonNode
| 
 | a JsonNode of type JSON_NODE_VALUE | 
| Returns : | a newly allocated string containing a copy
of the JsonNode contents. Use g_free()to free the allocated resources. [transfer full] | 
void json_node_set_parent (JsonNode *node,JsonNode *parent);
Sets the parent JsonNode of node
Since 0.8
JsonNode *          json_node_get_parent                (JsonNode *node);
Retrieves the parent JsonNode of node.
| 
 | a JsonNode | 
| Returns : | the parent node, or NULLifnodeis
the root node. [transfer none] | 
const gchar *       json_node_type_name                 (JsonNode *node);
Retrieves the user readable name of the data type contained by node.
| 
 | a JsonNode | 
| Returns : | a string containing the name of the type. The returned string is owned by the node and should never be modified or freed | 
GType               json_node_get_value_type            (JsonNode *node);
Returns the GType of the payload of the node.
| 
 | a JsonNode | 
| Returns : | a GType for the payload. | 
Since 0.4
JsonNodeType        json_node_get_node_type             (JsonNode *node);
Retrieves the JsonNodeType of node
| 
 | a JsonNode | 
| Returns : | the type of the node | 
Since 0.8
gboolean            json_node_is_null                   (JsonNode *node);
Checks whether node is a JSON_NODE_NULL
| 
 | a JsonNode | 
| Returns : | TRUEif the node is null | 
Since 0.8