Top | ![]() |
![]() |
![]() |
![]() |
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.
#define JSON_NODE_TYPE(node) (json_node_get_node_type ((node)))
Evaluates to the JsonNodeType contained by node
#define JSON_NODE_HOLDS(node,t) (json_node_get_node_type ((node)) == (t))
Evaluates to TRUE
if the node
holds type t
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
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
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
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
Since: 0.10
JsonNode *
json_node_alloc (void
);
Allocates a new JsonNode. Use json_node_init()
and its variants
to initialize the returned value.
[constructor]
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.
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.
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.
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.
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.
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.
node |
the JsonNode to initialize |
|
object |
the JsonObject to initialize |
[allow-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.
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 |
json_node_init (json_node_alloc (), type); |
[constructor]
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_set_array (JsonNode *node
,JsonArray *array
);
Sets array
inside node
and increases the JsonArray reference count
void json_node_take_array (JsonNode *node
,JsonArray *array
);
Sets array
into node
without increasing the JsonArray reference count.
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.
void json_node_take_object (JsonNode *node
,JsonObject *object
);
Sets object
inside node
. The reference count of object
is not increased.
JsonObject *
json_node_get_object (JsonNode *node
);
Retrieves the JsonObject stored inside a JsonNode
JsonObject *
json_node_dup_object (JsonNode *node
);
Retrieves the JsonObject inside node
. The reference count of
the returned object is increased.
void json_node_set_value (JsonNode *node
,const GValue *value
);
Sets value
inside node
. The passed GValue is copied into the JsonNode
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.
void json_node_set_boolean (JsonNode *node
,gboolean value
);
Sets value
as the boolean content of the node
, replacing any existing
content.
gboolean
json_node_get_boolean (JsonNode *node
);
Gets the boolean value stored inside a JsonNode
void json_node_set_double (JsonNode *node
,gdouble value
);
Sets value
as the double content of the node
, replacing any existing
content.
gdouble
json_node_get_double (JsonNode *node
);
Gets the double value stored inside a JsonNode
void json_node_set_int (JsonNode *node
,gint64 value
);
Sets value
as the integer content of the node
, replacing any existing
content.
gint64
json_node_get_int (JsonNode *node
);
Gets the integer value stored inside a JsonNode
void json_node_set_string (JsonNode *node
,const gchar *value
);
Sets value
as the string content of the node
, replacing any existing
content.
const gchar *
json_node_get_string (JsonNode *node
);
Gets the string value stored inside a JsonNode
gchar *
json_node_dup_string (JsonNode *node
);
Gets a copy of the string value stored inside a JsonNode
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
.
const gchar *
json_node_type_name (JsonNode *node
);
Retrieves the user readable name of the data type contained by node
.
GType
json_node_get_value_type (JsonNode *node
);
Returns the GType of the payload of the node.
Since: 0.4
JsonNodeType
json_node_get_node_type (JsonNode *node
);
Retrieves the JsonNodeType of node
Since: 0.8
gboolean
json_node_is_null (JsonNode *node
);
Checks whether node
is a JSON_NODE_NULL
.
A JSON_NODE_NULL
node is not the same as a NULL
JsonNode; a
JSON_NODE_NULL
represents a 'null' value in the JSON tree.
Since: 0.8
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.