Struct
JsonNode
since: 1.0
Description [src]
struct JsonNode {
/* No available fields */
}
A generic container of JSON data types.
JsonNode 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.
A JsonNode may be marked as immutable using json_node_seal(). This
marks the node and all its descendents as read-only, and means that
subsequent calls to setter functions (such as json_node_set_array())
on them will abort as a programmer error. By marking a node tree as
immutable, it may be referenced in multiple places and its hash value cached
for fast lookups, without the possibility of a value deep within the tree
changing and affecting hash values. Immutable nodes may be passed to
functions which retain a reference to them without needing to take a copy.
A JsonNode supports two types of memory management: malloc/free
semantics, and reference counting semantics. The two may be mixed to a
limited extent: nodes may be allocated (which gives them a reference count
of 1), referenced one or more times, unreferenced exactly that number of
times (using json_node_unref()), then either unreferenced exactly
once more or freed (using json_node_free()) to destroy them.
The json_node_free() function must not be used when a node might
have a reference count not equal to 1. To this end, JSON-GLib uses
json_node_copy() and json_node_unref() internally.
Available since: 1.0
Instance methods
json_node_equal
Check whether a and b are equal node, meaning they have the same
type and same values (checked recursively).
since: 1.2
json_node_is_immutable
Check whether the given node has been marked as immutable by calling
json_node_seal() on it.
since: 1.2
json_node_set_boolean
Sets value as the boolean content of the node, replacing any existing content.
since: 1.0
json_node_set_double
Sets value as the double content of the node, replacing any existing content.
since: 1.0
json_node_set_int
Sets value as the integer content of the node, replacing any existing content.
since: 1.0
json_node_set_string
Sets value as the string content of the node, replacing any existing content.
since: 1.0