Json.Node¶
Fields¶
None
Methods¶
class |
|
class |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Details¶
- class Json.Node¶
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 theGValue
holding it with the [method`Json`.Node.get_value] function, and then use theGValue
API to extract the data; if the node contains a complex type you can retrieve the [struct`Json`.Object] or the [struct`Json`.Array] using [method`Json`.Node.get_object] or [method`Json`.Node.get_array] respectively, and then retrieve the nodes they contain.A
JsonNode
may be marked as immutable using [method`Json`.Node.seal]. This marks the node and all its descendents as read-only, and means that subsequent calls to setter functions (such as [method`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 [method`Json`.Node.unref]), then either unreferenced exactly once more or freed (using [method`Json`.Node.free]) to destroy them. The [method`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 [method`Json`.Node.copy] and [method`Json`.Node.unref] internally.- classmethod alloc()¶
- Returns:
the newly allocated node
- Return type:
Allocates a new, uninitialized node.
Use [method`Json`.Node.init] and its variants to initialize the returned value.
New in version 0.16.
- classmethod new(type)¶
- Parameters:
type (
Json.NodeType
) – the type of the node to create- Returns:
the newly created node
- Return type:
Creates a new node holding the given type.
This is a convenience function for [ctor`Json`.Node.alloc] and [method`Json`.Node.init], and it’s the equivalent of:
- ``c
json_node_init (json_node_alloc (), type);
- copy()¶
- Returns:
the copied of the given node
- Return type:
Copies self.
If the node contains complex data types, their reference counts are increased, regardless of whether the node is mutable or immutable.
The copy will be immutable if, and only if, self is immutable. However, there should be no need to copy an immutable node.
- dup_array()¶
- Returns:
the JSON array with its reference count increased.
- Return type:
Json.Array
orNone
Retrieves the JSON array inside self.
The reference count of the returned array is increased.
It is a programmer error to call this on a node which doesn’t hold an array value. Use
JSON_NODE_HOLDS_ARRAY
first.
- dup_object()¶
- Returns:
the JSON object
- Return type:
Json.Object
orNone
Retrieves the object inside self.
The reference count of the returned object is increased.
It is a programmer error to call this on a node which doesn’t hold an object value. Use
JSON_NODE_HOLDS_OBJECT
first.
- dup_string()¶
-
Gets a copy of the string value stored inside a node.
If the node does not hold a string value,
NULL
is returned.
- equal(b)¶
- Parameters:
b (
Json.Node
) – another JSON node- Returns:
TRUE
if self and b are equal;FALSE
otherwise- Return type:
Check whether self and b are equal node, meaning they have the same type and same values (checked recursively).
Note that integer values are compared numerically, ignoring type, so a double value 4.0 is equal to the integer value 4.
New in version 1.2.
- free()¶
Frees the resources allocated by the node.
- get_array()¶
- Returns:
the JSON array
- Return type:
Json.Array
orNone
Retrieves the JSON array stored inside a node.
It is a programmer error to call this on a node which doesn’t hold an array value. Use
JSON_NODE_HOLDS_ARRAY
first.
- get_boolean()¶
- Returns:
a boolean value.
- Return type:
Gets the boolean value stored inside a node.
If the node holds an integer or double value which is zero,
FALSE
is returned; otherwiseTRUE
is returned.If the node holds a
JSON_NODE_NULL
value or a value of another non-boolean type,FALSE
is returned.
- get_double()¶
- Returns:
a double value.
- Return type:
Gets the double value stored inside a node.
If the node holds an integer value, it is returned as a double.
If the node holds a
FALSE
boolean value,0.0
is returned; otherwise a non-zero double is returned.If the node holds a
JSON_NODE_NULL
value or a value of another non-double type,0.0
is returned.
- get_int()¶
- Returns:
an integer value.
- Return type:
Gets the integer value stored inside a node.
If the node holds a double value, its integer component is returned.
If the node holds a
FALSE
boolean value,0
is returned; otherwise, a non-zero integer is returned.If the node holds a
JSON_NODE_NULL
value or a value of another non-integer type,0
is returned.
- get_node_type()¶
- Returns:
the type of the node
- Return type:
Retrieves the type of a self.
New in version 0.8.
- get_object()¶
- Returns:
the JSON object
- Return type:
Json.Object
orNone
Retrieves the object stored inside a node.
It is a programmer error to call this on a node which doesn’t hold an object value. Use
JSON_NODE_HOLDS_OBJECT
first.
- get_parent()¶
-
Retrieves the parent node of the given self.
- get_string()¶
-
Gets the string value stored inside a node.
If the node does not hold a string value,
NULL
is returned.
- get_value()¶
- Returns:
return location for an uninitialized value
- Return type:
value:
GObject.Value
Retrieves a value from a node and copies into value.
When done using it, call
g_value_unset()
on theGValue
to free the associated resources.It is a programmer error to call this on a node which doesn’t hold a scalar value. Use
JSON_NODE_HOLDS_VALUE
first.
- get_value_type()¶
- Returns:
the type for the payload
- Return type:
Returns the
GType
of the payload of the node.For
JSON_NODE_NULL
nodes, the returned type isG_TYPE_INVALID
.New in version 0.4.
- hash()¶
- Returns:
hash value for self
- Return type:
Calculate a hash value for the given self.
The hash is calculated over the node and its value, recursively. If the node is immutable, this is a fast operation; otherwise, it scales proportionally with the size of the node’s value (for example, with the number of members in the JSON object if this node contains an object).
New in version 1.2.
- init(type)¶
- Parameters:
type (
Json.NodeType
) – the type of JSON node to initialize self to- Returns:
the initialized node
- Return type:
Initializes a self 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.
New in version 0.16.
- init_array(array)¶
- Parameters:
array (
Json.Array
orNone
) – the JSON array to initialize self with, orNULL
- Returns:
the initialized node
- Return type:
Initializes self 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.
New in version 0.16.
- init_boolean(value)¶
-
Initializes self 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.
New in version 0.16.
- init_double(value)¶
- Parameters:
value (
float
) – a floating point value- Returns:
the initialized node
- Return type:
Initializes self 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.
New in version 0.16.
- init_int(value)¶
-
Initializes self 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.
New in version 0.16.
- init_null()¶
- Returns:
the initialized node
- Return type:
Initializes self 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.
New in version 0.16.
- init_object(object)¶
- Parameters:
object (
Json.Object
orNone
) – the JSON object to initialize self with, orNULL
- Returns:
the initialized node
- Return type:
Initializes self 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.
New in version 0.16.
- init_string(value)¶
- Parameters:
- Returns:
the initialized node
- Return type:
Initializes self 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.
New in version 0.16.
- is_immutable()¶
- Returns:
TRUE
if the self is immutable- Return type:
Check whether the given self has been marked as immutable by calling [method`Json`.Node.seal] on it.
New in version 1.2.
- is_null()¶
- Returns:
TRUE
if the node is null- Return type:
Checks whether self is a
JSON_NODE_NULL
.A
JSON_NODE_NULL
node is not the same as aNULL
node; aJSON_NODE_NULL
represents a literalnull
value in the JSON tree.New in version 0.8.
- ref()¶
- Returns:
a pointer to self
- Return type:
Increments the reference count of self.
New in version 1.2.
- seal()¶
Seals the given node, making it immutable to further changes.
In order to be sealed, the self must have a type and value set. The value will be recursively sealed — if the node holds an object, that JSON object will be sealed, etc.
If the
node
is already immutable, this is a no-op.New in version 1.2.
- set_array(array)¶
- Parameters:
array (
Json.Array
) – a JSON array
Sets array inside self.
The reference count of array is increased.
It is a programmer error to call this on a node which doesn’t hold an array value. Use
JSON_NODE_HOLDS_ARRAY
first.
- set_boolean(value)¶
- Parameters:
value (
bool
) – a boolean value
Sets value as the boolean content of the self, replacing any existing content.
It is an error to call this on an immutable node, or on a node which is not a value node.
- set_double(value)¶
- Parameters:
value (
float
) – a double value
Sets value as the double content of the self, replacing any existing content.
It is an error to call this on an immutable node, or on a node which is not a value node.
- set_int(value)¶
- Parameters:
value (
int
) – an integer value
Sets value as the integer content of the self, replacing any existing content.
It is an error to call this on an immutable node, or on a node which is not a value node.
- set_object(object)¶
- Parameters:
object (
Json.Object
orNone
) – a JSON object
Sets objects inside self.
The reference count of object is increased.
If object is
NULL
, the node’s existing object is cleared.It is an error to call this on an immutable node, or on a node which is not an object node.
- set_parent(parent)¶
-
Sets the parent node for the given
node
.It is an error to call this with an immutable parent.
The self may be immutable.
New in version 0.8.
- set_string(value)¶
- Parameters:
value (
str
) – a string value
Sets value as the string content of the self, replacing any existing content.
It is an error to call this on an immutable node, or on a node which is not a value node.
- set_value(value)¶
- Parameters:
value (
GObject.Value
) – the value to set
Sets a scalar value inside the given node.
The contents of the given
GValue
are copied into theJsonNode
.The following
GValue
types have a direct mapping to JSON types:G_TYPE_INT64
G_TYPE_DOUBLE
G_TYPE_BOOLEAN
G_TYPE_STRING
JSON-GLib will also automatically promote the following
GValue
types:G_TYPE_INT
toG_TYPE_INT64
G_TYPE_FLOAT
toG_TYPE_DOUBLE
It is an error to call this on an immutable node, or on a node which is not a value node.
- take_array(array)¶
- Parameters:
array (
Json.Array
) – a JSON array
Sets array inside self.
The reference count of array is not increased.
It is a programmer error to call this on a node which doesn’t hold an array value. Use
JSON_NODE_HOLDS_ARRAY
first.
- take_object(object)¶
- Parameters:
object (
Json.Object
) – a JSON object
Sets object inside self.
The reference count of object is not increased.
It is an error to call this on an immutable node, or on a node which is not an object node.
- type_name()¶
- Returns:
a string containing the name of the type
- Return type:
Retrieves the user readable name of the data type contained by self.
**Note**: The name is only meant for debugging purposes, and there is no guarantee the name will stay the same across different versions.
- unref()¶
Decrements the reference count of self.
If the reference count reaches zero, the node is freed.
New in version 1.2.