Struct
JsonNode
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.
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.