2 <!-- This file was automatically generated from C sources - DO NOT EDIT!
3 To affect the contents of this file, edit the original C definitions,
4 and/or use gtk-doc annotations. -->
5 <repository version="1.2"
6 xmlns="http://www.gtk.org/introspection/core/1.0"
7 xmlns:c="http://www.gtk.org/introspection/c/1.0"
8 xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9 <include name="GObject" version="2.0"/>
10 <include name="Gio" version="2.0"/>
11 <package name="json-glib-1.0"/>
12 <c:include name="json-glib/json-glib.h"/>
13 <namespace name="Json"
15 shared-library="libjson-glib-1.0.so.0"
16 c:identifier-prefixes="Json"
17 c:symbol-prefixes="json">
20 glib:type-name="JsonArray"
21 glib:get-type="json_array_get_type"
22 c:symbol-prefix="array">
23 <doc xml:space="preserve">A JSON array type. The contents of the #JsonArray structure are private
24 and should only be accessed by the provided API</doc>
25 <constructor name="new" c:identifier="json_array_new">
26 <doc xml:space="preserve">Creates a new #JsonArray.</doc>
27 <return-value transfer-ownership="full">
28 <doc xml:space="preserve">the newly created #JsonArray</doc>
29 <type name="Array" c:type="JsonArray*"/>
32 <constructor name="sized_new" c:identifier="json_array_sized_new">
33 <doc xml:space="preserve">Creates a new #JsonArray with @n_elements slots already allocated.</doc>
34 <return-value transfer-ownership="full">
35 <doc xml:space="preserve">the newly created #JsonArray</doc>
36 <type name="Array" c:type="JsonArray*"/>
39 <parameter name="n_elements" transfer-ownership="none">
40 <doc xml:space="preserve">number of slots to pre-allocate</doc>
41 <type name="guint" c:type="guint"/>
45 <method name="add_array_element"
46 c:identifier="json_array_add_array_element"
48 <doc xml:space="preserve">Conveniently adds an array into @array. The @array takes ownership
49 of the newly added #JsonArray
51 See also: json_array_add_element(), json_node_take_array()</doc>
52 <return-value transfer-ownership="none">
53 <type name="none" c:type="void"/>
56 <instance-parameter name="array" transfer-ownership="none">
57 <doc xml:space="preserve">a #JsonArray</doc>
58 <type name="Array" c:type="JsonArray*"/>
60 <parameter name="value"
61 transfer-ownership="full"
64 <doc xml:space="preserve">a #JsonArray</doc>
65 <type name="Array" c:type="JsonArray*"/>
69 <method name="add_boolean_element"
70 c:identifier="json_array_add_boolean_element"
72 <doc xml:space="preserve">Conveniently adds a boolean @value into @array
74 See also: json_array_add_element(), json_node_set_boolean()</doc>
75 <return-value transfer-ownership="none">
76 <type name="none" c:type="void"/>
79 <instance-parameter name="array" transfer-ownership="none">
80 <doc xml:space="preserve">a #JsonArray</doc>
81 <type name="Array" c:type="JsonArray*"/>
83 <parameter name="value" transfer-ownership="none">
84 <doc xml:space="preserve">a boolean value</doc>
85 <type name="gboolean" c:type="gboolean"/>
89 <method name="add_double_element"
90 c:identifier="json_array_add_double_element"
92 <doc xml:space="preserve">Conveniently adds a floating point @value into @array
94 See also: json_array_add_element(), json_node_set_double()</doc>
95 <return-value transfer-ownership="none">
96 <type name="none" c:type="void"/>
99 <instance-parameter name="array" transfer-ownership="none">
100 <doc xml:space="preserve">a #JsonArray</doc>
101 <type name="Array" c:type="JsonArray*"/>
102 </instance-parameter>
103 <parameter name="value" transfer-ownership="none">
104 <doc xml:space="preserve">a floating point value</doc>
105 <type name="gdouble" c:type="gdouble"/>
109 <method name="add_element" c:identifier="json_array_add_element">
110 <doc xml:space="preserve">Appends @node inside @array. The array will take ownership of the
112 <return-value transfer-ownership="none">
113 <type name="none" c:type="void"/>
116 <instance-parameter name="array" transfer-ownership="none">
117 <doc xml:space="preserve">a #JsonArray</doc>
118 <type name="Array" c:type="JsonArray*"/>
119 </instance-parameter>
120 <parameter name="node" transfer-ownership="full">
121 <doc xml:space="preserve">a #JsonNode</doc>
122 <type name="Node" c:type="JsonNode*"/>
126 <method name="add_int_element"
127 c:identifier="json_array_add_int_element"
129 <doc xml:space="preserve">Conveniently adds an integer @value into @array
131 See also: json_array_add_element(), json_node_set_int()</doc>
132 <return-value transfer-ownership="none">
133 <type name="none" c:type="void"/>
136 <instance-parameter name="array" transfer-ownership="none">
137 <doc xml:space="preserve">a #JsonArray</doc>
138 <type name="Array" c:type="JsonArray*"/>
139 </instance-parameter>
140 <parameter name="value" transfer-ownership="none">
141 <doc xml:space="preserve">an integer value</doc>
142 <type name="gint64" c:type="gint64"/>
146 <method name="add_null_element"
147 c:identifier="json_array_add_null_element"
149 <doc xml:space="preserve">Conveniently adds a null element into @array
151 See also: json_array_add_element(), %JSON_NODE_NULL</doc>
152 <return-value transfer-ownership="none">
153 <type name="none" c:type="void"/>
156 <instance-parameter name="array" transfer-ownership="none">
157 <doc xml:space="preserve">a #JsonArray</doc>
158 <type name="Array" c:type="JsonArray*"/>
159 </instance-parameter>
162 <method name="add_object_element"
163 c:identifier="json_array_add_object_element"
165 <doc xml:space="preserve">Conveniently adds an object into @array. The @array takes ownership
166 of the newly added #JsonObject
168 See also: json_array_add_element(), json_node_take_object()</doc>
169 <return-value transfer-ownership="none">
170 <type name="none" c:type="void"/>
173 <instance-parameter name="array" transfer-ownership="none">
174 <doc xml:space="preserve">a #JsonArray</doc>
175 <type name="Array" c:type="JsonArray*"/>
176 </instance-parameter>
177 <parameter name="value" transfer-ownership="full">
178 <doc xml:space="preserve">a #JsonObject</doc>
179 <type name="Object" c:type="JsonObject*"/>
183 <method name="add_string_element"
184 c:identifier="json_array_add_string_element"
186 <doc xml:space="preserve">Conveniently adds a string @value into @array
188 See also: json_array_add_element(), json_node_set_string()</doc>
189 <return-value transfer-ownership="none">
190 <type name="none" c:type="void"/>
193 <instance-parameter name="array" transfer-ownership="none">
194 <doc xml:space="preserve">a #JsonArray</doc>
195 <type name="Array" c:type="JsonArray*"/>
196 </instance-parameter>
197 <parameter name="value" transfer-ownership="none">
198 <doc xml:space="preserve">a string value</doc>
199 <type name="utf8" c:type="const gchar*"/>
203 <method name="dup_element"
204 c:identifier="json_array_dup_element"
206 <doc xml:space="preserve">Retrieves a copy of the #JsonNode containing the value of the
207 element at @index_ inside a #JsonArray</doc>
208 <return-value transfer-ownership="full">
209 <doc xml:space="preserve">a copy of the #JsonNode at the requested
210 index. Use json_node_unref() when done.</doc>
211 <type name="Node" c:type="JsonNode*"/>
214 <instance-parameter name="array" transfer-ownership="none">
215 <doc xml:space="preserve">a #JsonArray</doc>
216 <type name="Array" c:type="JsonArray*"/>
217 </instance-parameter>
218 <parameter name="index_" transfer-ownership="none">
219 <doc xml:space="preserve">the index of the element to retrieve</doc>
220 <type name="guint" c:type="guint"/>
224 <method name="equal" c:identifier="json_array_equal" version="1.2">
225 <doc xml:space="preserve">Check whether @a and @b are equal #JsonArrays, meaning they have the same
226 number of elements, and the values of elements in corresponding positions
228 <return-value transfer-ownership="none">
229 <doc xml:space="preserve">%TRUE if @a and @b are equal; %FALSE otherwise</doc>
230 <type name="gboolean" c:type="gboolean"/>
233 <instance-parameter name="a" transfer-ownership="none">
234 <doc xml:space="preserve">a JSON array</doc>
235 <type name="Array" c:type="gconstpointer"/>
236 </instance-parameter>
237 <parameter name="b" transfer-ownership="none">
238 <doc xml:space="preserve">another JSON array</doc>
239 <type name="Array" c:type="gconstpointer"/>
243 <method name="foreach_element"
244 c:identifier="json_array_foreach_element"
246 <doc xml:space="preserve">Iterates over all elements of @array and calls @func on
249 It is safe to change the value of a #JsonNode of the @array
250 from within the iterator @func, but it is not safe to add or
251 remove elements from the @array.</doc>
252 <return-value transfer-ownership="none">
253 <type name="none" c:type="void"/>
256 <instance-parameter name="array" transfer-ownership="none">
257 <doc xml:space="preserve">a #JsonArray</doc>
258 <type name="Array" c:type="JsonArray*"/>
259 </instance-parameter>
260 <parameter name="func"
261 transfer-ownership="none"
264 <doc xml:space="preserve">the function to be called on each element</doc>
265 <type name="ArrayForeach" c:type="JsonArrayForeach"/>
267 <parameter name="data"
268 transfer-ownership="none"
271 <doc xml:space="preserve">data to be passed to the function</doc>
272 <type name="gpointer" c:type="gpointer"/>
276 <method name="get_array_element"
277 c:identifier="json_array_get_array_element"
279 <doc xml:space="preserve">Conveniently retrieves the array from the element at @index_
282 See also: json_array_get_element(), json_node_get_array()</doc>
283 <return-value transfer-ownership="none">
284 <doc xml:space="preserve">the array</doc>
285 <type name="Array" c:type="JsonArray*"/>
288 <instance-parameter name="array" transfer-ownership="none">
289 <doc xml:space="preserve">a #JsonArray</doc>
290 <type name="Array" c:type="JsonArray*"/>
291 </instance-parameter>
292 <parameter name="index_" transfer-ownership="none">
293 <doc xml:space="preserve">the index of the element to retrieve</doc>
294 <type name="guint" c:type="guint"/>
298 <method name="get_boolean_element"
299 c:identifier="json_array_get_boolean_element"
301 <doc xml:space="preserve">Conveniently retrieves the boolean value of the element at @index_
304 See also: json_array_get_element(), json_node_get_boolean()</doc>
305 <return-value transfer-ownership="none">
306 <doc xml:space="preserve">the integer value</doc>
307 <type name="gboolean" c:type="gboolean"/>
310 <instance-parameter name="array" transfer-ownership="none">
311 <doc xml:space="preserve">a #JsonArray</doc>
312 <type name="Array" c:type="JsonArray*"/>
313 </instance-parameter>
314 <parameter name="index_" transfer-ownership="none">
315 <doc xml:space="preserve">the index of the element to retrieve</doc>
316 <type name="guint" c:type="guint"/>
320 <method name="get_double_element"
321 c:identifier="json_array_get_double_element"
323 <doc xml:space="preserve">Conveniently retrieves the floating point value of the element at
324 @index_ inside @array
326 See also: json_array_get_element(), json_node_get_double()</doc>
327 <return-value transfer-ownership="none">
328 <doc xml:space="preserve">the floating point value</doc>
329 <type name="gdouble" c:type="gdouble"/>
332 <instance-parameter name="array" transfer-ownership="none">
333 <doc xml:space="preserve">a #JsonArray</doc>
334 <type name="Array" c:type="JsonArray*"/>
335 </instance-parameter>
336 <parameter name="index_" transfer-ownership="none">
337 <doc xml:space="preserve">the index of the element to retrieve</doc>
338 <type name="guint" c:type="guint"/>
342 <method name="get_element" c:identifier="json_array_get_element">
343 <doc xml:space="preserve">Retrieves the #JsonNode containing the value of the element at @index_
344 inside a #JsonArray.</doc>
345 <return-value transfer-ownership="none">
346 <doc xml:space="preserve">a pointer to the #JsonNode at the requested index</doc>
347 <type name="Node" c:type="JsonNode*"/>
350 <instance-parameter name="array" transfer-ownership="none">
351 <doc xml:space="preserve">a #JsonArray</doc>
352 <type name="Array" c:type="JsonArray*"/>
353 </instance-parameter>
354 <parameter name="index_" transfer-ownership="none">
355 <doc xml:space="preserve">the index of the element to retrieve</doc>
356 <type name="guint" c:type="guint"/>
360 <method name="get_elements" c:identifier="json_array_get_elements">
361 <doc xml:space="preserve">Gets the elements of a #JsonArray as a list of #JsonNode instances.</doc>
362 <return-value transfer-ownership="container">
363 <doc xml:space="preserve">a #GList
364 containing the elements of the array. The contents of the list are
365 owned by the array and should never be modified or freed. Use
366 g_list_free() on the returned list when done using it</doc>
367 <type name="GLib.List" c:type="GList*">
372 <instance-parameter name="array" transfer-ownership="none">
373 <doc xml:space="preserve">a #JsonArray</doc>
374 <type name="Array" c:type="JsonArray*"/>
375 </instance-parameter>
378 <method name="get_int_element"
379 c:identifier="json_array_get_int_element"
381 <doc xml:space="preserve">Conveniently retrieves the integer value of the element at @index_
384 See also: json_array_get_element(), json_node_get_int()</doc>
385 <return-value transfer-ownership="none">
386 <doc xml:space="preserve">the integer value</doc>
387 <type name="gint64" c:type="gint64"/>
390 <instance-parameter name="array" transfer-ownership="none">
391 <doc xml:space="preserve">a #JsonArray</doc>
392 <type name="Array" c:type="JsonArray*"/>
393 </instance-parameter>
394 <parameter name="index_" transfer-ownership="none">
395 <doc xml:space="preserve">the index of the element to retrieve</doc>
396 <type name="guint" c:type="guint"/>
400 <method name="get_length" c:identifier="json_array_get_length">
401 <doc xml:space="preserve">Retrieves the length of a #JsonArray</doc>
402 <return-value transfer-ownership="none">
403 <doc xml:space="preserve">the length of the array</doc>
404 <type name="guint" c:type="guint"/>
407 <instance-parameter name="array" transfer-ownership="none">
408 <doc xml:space="preserve">a #JsonArray</doc>
409 <type name="Array" c:type="JsonArray*"/>
410 </instance-parameter>
413 <method name="get_null_element"
414 c:identifier="json_array_get_null_element"
416 <doc xml:space="preserve">Conveniently retrieves whether the element at @index_ is set to null
418 See also: json_array_get_element(), JSON_NODE_TYPE(), %JSON_NODE_NULL</doc>
419 <return-value transfer-ownership="none">
420 <doc xml:space="preserve">%TRUE if the element is null</doc>
421 <type name="gboolean" c:type="gboolean"/>
424 <instance-parameter name="array" transfer-ownership="none">
425 <doc xml:space="preserve">a #JsonArray</doc>
426 <type name="Array" c:type="JsonArray*"/>
427 </instance-parameter>
428 <parameter name="index_" transfer-ownership="none">
429 <doc xml:space="preserve">the index of the element to retrieve</doc>
430 <type name="guint" c:type="guint"/>
434 <method name="get_object_element"
435 c:identifier="json_array_get_object_element"
437 <doc xml:space="preserve">Conveniently retrieves the object from the element at @index_
440 See also: json_array_get_element(), json_node_get_object()</doc>
441 <return-value transfer-ownership="none">
442 <doc xml:space="preserve">the object</doc>
443 <type name="Object" c:type="JsonObject*"/>
446 <instance-parameter name="array" transfer-ownership="none">
447 <doc xml:space="preserve">a #JsonArray</doc>
448 <type name="Array" c:type="JsonArray*"/>
449 </instance-parameter>
450 <parameter name="index_" transfer-ownership="none">
451 <doc xml:space="preserve">the index of the element to retrieve</doc>
452 <type name="guint" c:type="guint"/>
456 <method name="get_string_element"
457 c:identifier="json_array_get_string_element"
459 <doc xml:space="preserve">Conveniently retrieves the string value of the element at @index_
462 See also: json_array_get_element(), json_node_get_string()</doc>
463 <return-value transfer-ownership="none">
464 <doc xml:space="preserve">the string value; the returned string is owned by
465 the #JsonArray and should not be modified or freed</doc>
466 <type name="utf8" c:type="const gchar*"/>
469 <instance-parameter name="array" transfer-ownership="none">
470 <doc xml:space="preserve">a #JsonArray</doc>
471 <type name="Array" c:type="JsonArray*"/>
472 </instance-parameter>
473 <parameter name="index_" transfer-ownership="none">
474 <doc xml:space="preserve">the index of the element to retrieve</doc>
475 <type name="guint" c:type="guint"/>
479 <method name="hash" c:identifier="json_array_hash" version="1.2">
480 <doc xml:space="preserve">Calculate a hash value for the given @key (a #JsonArray).
482 The hash is calculated over the array and all its elements, recursively. If
483 the array is immutable, this is a fast operation; otherwise, it scales
484 proportionally with the length of the array.</doc>
485 <return-value transfer-ownership="none">
486 <doc xml:space="preserve">hash value for @key</doc>
487 <type name="guint" c:type="guint"/>
490 <instance-parameter name="key" transfer-ownership="none">
491 <doc xml:space="preserve">a JSON array to hash</doc>
492 <type name="Array" c:type="gconstpointer"/>
493 </instance-parameter>
496 <method name="is_immutable"
497 c:identifier="json_array_is_immutable"
499 <doc xml:space="preserve">Check whether the given @array has been marked as immutable by calling
500 json_array_seal() on it.</doc>
501 <return-value transfer-ownership="none">
502 <doc xml:space="preserve">%TRUE if the @array is immutable</doc>
503 <type name="gboolean" c:type="gboolean"/>
506 <instance-parameter name="array" transfer-ownership="none">
507 <doc xml:space="preserve">a #JsonArray</doc>
508 <type name="Array" c:type="JsonArray*"/>
509 </instance-parameter>
512 <method name="ref" c:identifier="json_array_ref">
513 <doc xml:space="preserve">Increase by one the reference count of a #JsonArray.</doc>
514 <return-value transfer-ownership="none">
515 <doc xml:space="preserve">the passed #JsonArray, with the reference count
516 increased by one.</doc>
517 <type name="Array" c:type="JsonArray*"/>
520 <instance-parameter name="array" transfer-ownership="none">
521 <doc xml:space="preserve">a #JsonArray</doc>
522 <type name="Array" c:type="JsonArray*"/>
523 </instance-parameter>
526 <method name="remove_element" c:identifier="json_array_remove_element">
527 <doc xml:space="preserve">Removes the #JsonNode inside @array at @index_ freeing its allocated
529 <return-value transfer-ownership="none">
530 <type name="none" c:type="void"/>
533 <instance-parameter name="array" transfer-ownership="none">
534 <doc xml:space="preserve">a #JsonArray</doc>
535 <type name="Array" c:type="JsonArray*"/>
536 </instance-parameter>
537 <parameter name="index_" transfer-ownership="none">
538 <doc xml:space="preserve">the position of the element to be removed</doc>
539 <type name="guint" c:type="guint"/>
543 <method name="seal" c:identifier="json_array_seal" version="1.2">
544 <doc xml:space="preserve">Seals the #JsonArray, making it immutable to further changes. This will
545 recursively seal all elements in the array too.
547 If the @array is already immutable, this is a no-op.</doc>
548 <return-value transfer-ownership="none">
549 <type name="none" c:type="void"/>
552 <instance-parameter name="array" transfer-ownership="none">
553 <doc xml:space="preserve">a #JsonArray</doc>
554 <type name="Array" c:type="JsonArray*"/>
555 </instance-parameter>
558 <method name="unref" c:identifier="json_array_unref">
559 <doc xml:space="preserve">Decreases by one the reference count of a #JsonArray. If the
560 reference count reaches zero, the array is destroyed and all
561 its allocated resources are freed.</doc>
562 <return-value transfer-ownership="none">
563 <type name="none" c:type="void"/>
566 <instance-parameter name="array" transfer-ownership="none">
567 <doc xml:space="preserve">a #JsonArray</doc>
568 <type name="Array" c:type="JsonArray*"/>
569 </instance-parameter>
573 <callback name="ArrayForeach" c:type="JsonArrayForeach" version="0.8">
574 <doc xml:space="preserve">The function to be passed to json_array_foreach_element(). You
575 should not add or remove elements to and from @array within
576 this function. It is safe to change the value of @element_node.</doc>
577 <return-value transfer-ownership="none">
578 <type name="none" c:type="void"/>
581 <parameter name="array" transfer-ownership="none">
582 <doc xml:space="preserve">the iterated #JsonArray</doc>
583 <type name="Array" c:type="JsonArray*"/>
585 <parameter name="index_" transfer-ownership="none">
586 <doc xml:space="preserve">the index of the element</doc>
587 <type name="guint" c:type="guint"/>
589 <parameter name="element_node" transfer-ownership="none">
590 <doc xml:space="preserve">a #JsonNode containing the value at @index_</doc>
591 <type name="Node" c:type="JsonNode*"/>
593 <parameter name="user_data"
594 transfer-ownership="none"
598 <doc xml:space="preserve">data passed to the function</doc>
599 <type name="gpointer" c:type="gpointer"/>
603 <callback name="BoxedDeserializeFunc"
604 c:type="JsonBoxedDeserializeFunc"
606 <doc xml:space="preserve">Deserializes the contents of the passed #JsonNode into a #GBoxed</doc>
607 <return-value transfer-ownership="none" nullable="1">
608 <doc xml:space="preserve">the newly created boxed type</doc>
609 <type name="gpointer" c:type="gpointer"/>
612 <parameter name="node" transfer-ownership="none">
613 <doc xml:space="preserve">a #JsonNode</doc>
614 <type name="Node" c:type="JsonNode*"/>
618 <callback name="BoxedSerializeFunc"
619 c:type="JsonBoxedSerializeFunc"
621 <doc xml:space="preserve">Serializes the passed #GBoxed and stores it inside a #JsonNode</doc>
622 <return-value transfer-ownership="full">
623 <doc xml:space="preserve">the newly created #JsonNode</doc>
624 <type name="Node" c:type="JsonNode*"/>
627 <parameter name="boxed"
628 transfer-ownership="none"
631 <doc xml:space="preserve">a #GBoxed</doc>
632 <type name="gpointer" c:type="gconstpointer"/>
636 <class name="Builder"
637 c:symbol-prefix="builder"
640 parent="GObject.Object"
641 glib:type-name="JsonBuilder"
642 glib:get-type="json_builder_get_type"
643 glib:type-struct="BuilderClass">
644 <doc xml:space="preserve">The `JsonBuilder` structure contains only private data and should be
645 accessed using the provided API</doc>
646 <constructor name="new" c:identifier="json_builder_new">
647 <doc xml:space="preserve">Creates a new #JsonBuilder. You can use this object to generate a
648 JSON tree and obtain the root #JsonNode.</doc>
649 <return-value transfer-ownership="full">
650 <doc xml:space="preserve">the newly created #JsonBuilder instance</doc>
651 <type name="Builder" c:type="JsonBuilder*"/>
654 <constructor name="new_immutable"
655 c:identifier="json_builder_new_immutable"
657 <doc xml:space="preserve">Creates a new #JsonBuilder instance with its #JsonBuilder:immutable property
658 set to %TRUE to create immutable output trees.</doc>
659 <return-value transfer-ownership="full">
660 <doc xml:space="preserve">a new #JsonBuilder</doc>
661 <type name="Builder" c:type="JsonBuilder*"/>
664 <method name="add_boolean_value"
665 c:identifier="json_builder_add_boolean_value">
666 <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @value as member of the
667 most recent opened object, otherwise @value is added as element of the most
670 See also: json_builder_add_value()</doc>
671 <return-value transfer-ownership="none">
672 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
673 <type name="Builder" c:type="JsonBuilder*"/>
676 <instance-parameter name="builder" transfer-ownership="none">
677 <doc xml:space="preserve">a #JsonBuilder</doc>
678 <type name="Builder" c:type="JsonBuilder*"/>
679 </instance-parameter>
680 <parameter name="value" transfer-ownership="none">
681 <doc xml:space="preserve">the value of the member or element</doc>
682 <type name="gboolean" c:type="gboolean"/>
686 <method name="add_double_value"
687 c:identifier="json_builder_add_double_value">
688 <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @value as member of the
689 most recent opened object, otherwise @value is added as element of the most
692 See also: json_builder_add_value()</doc>
693 <return-value transfer-ownership="none">
694 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
695 <type name="Builder" c:type="JsonBuilder*"/>
698 <instance-parameter name="builder" transfer-ownership="none">
699 <doc xml:space="preserve">a #JsonBuilder</doc>
700 <type name="Builder" c:type="JsonBuilder*"/>
701 </instance-parameter>
702 <parameter name="value" transfer-ownership="none">
703 <doc xml:space="preserve">the value of the member or element</doc>
704 <type name="gdouble" c:type="gdouble"/>
708 <method name="add_int_value" c:identifier="json_builder_add_int_value">
709 <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @value as member of the
710 most recent opened object, otherwise @value is added as element of the most
713 See also: json_builder_add_value()</doc>
714 <return-value transfer-ownership="none">
715 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
716 <type name="Builder" c:type="JsonBuilder*"/>
719 <instance-parameter name="builder" transfer-ownership="none">
720 <doc xml:space="preserve">a #JsonBuilder</doc>
721 <type name="Builder" c:type="JsonBuilder*"/>
722 </instance-parameter>
723 <parameter name="value" transfer-ownership="none">
724 <doc xml:space="preserve">the value of the member or element</doc>
725 <type name="gint64" c:type="gint64"/>
729 <method name="add_null_value" c:identifier="json_builder_add_null_value">
730 <doc xml:space="preserve">If called after json_builder_set_member_name(), sets null as member of the
731 most recent opened object, otherwise null is added as element of the most
734 See also: json_builder_add_value()</doc>
735 <return-value transfer-ownership="none">
736 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
737 <type name="Builder" c:type="JsonBuilder*"/>
740 <instance-parameter name="builder" transfer-ownership="none">
741 <doc xml:space="preserve">a #JsonBuilder</doc>
742 <type name="Builder" c:type="JsonBuilder*"/>
743 </instance-parameter>
746 <method name="add_string_value"
747 c:identifier="json_builder_add_string_value">
748 <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @value as member of the
749 most recent opened object, otherwise @value is added as element of the most
752 See also: json_builder_add_value()</doc>
753 <return-value transfer-ownership="none">
754 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
755 <type name="Builder" c:type="JsonBuilder*"/>
758 <instance-parameter name="builder" transfer-ownership="none">
759 <doc xml:space="preserve">a #JsonBuilder</doc>
760 <type name="Builder" c:type="JsonBuilder*"/>
761 </instance-parameter>
762 <parameter name="value" transfer-ownership="none">
763 <doc xml:space="preserve">the value of the member or element</doc>
764 <type name="utf8" c:type="const gchar*"/>
768 <method name="add_value" c:identifier="json_builder_add_value">
769 <doc xml:space="preserve">If called after json_builder_set_member_name(), sets @node as member of the
770 most recent opened object, otherwise @node is added as element of the most
773 The builder will take ownership of the #JsonNode.</doc>
774 <return-value transfer-ownership="none">
775 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
776 <type name="Builder" c:type="JsonBuilder*"/>
779 <instance-parameter name="builder" transfer-ownership="none">
780 <doc xml:space="preserve">a #JsonBuilder</doc>
781 <type name="Builder" c:type="JsonBuilder*"/>
782 </instance-parameter>
783 <parameter name="node" transfer-ownership="full">
784 <doc xml:space="preserve">the value of the member or element</doc>
785 <type name="Node" c:type="JsonNode*"/>
789 <method name="begin_array" c:identifier="json_builder_begin_array">
790 <doc xml:space="preserve">Opens a subarray inside the given @builder. When done adding members to
791 the subarray, json_builder_end_array() must be called.
793 Can be called for first or only if the call is associated to an object member
794 or an array element.</doc>
795 <return-value transfer-ownership="none">
796 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
797 <type name="Builder" c:type="JsonBuilder*"/>
800 <instance-parameter name="builder" transfer-ownership="none">
801 <doc xml:space="preserve">a #JsonBuilder</doc>
802 <type name="Builder" c:type="JsonBuilder*"/>
803 </instance-parameter>
806 <method name="begin_object" c:identifier="json_builder_begin_object">
807 <doc xml:space="preserve">Opens a subobject inside the given @builder. When done adding members to
808 the subobject, json_builder_end_object() must be called.
810 Can be called for first or only if the call is associated to an object member
811 or an array element.</doc>
812 <return-value transfer-ownership="none">
813 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
814 <type name="Builder" c:type="JsonBuilder*"/>
817 <instance-parameter name="builder" transfer-ownership="none">
818 <doc xml:space="preserve">a #JsonBuilder</doc>
819 <type name="Builder" c:type="JsonBuilder*"/>
820 </instance-parameter>
823 <method name="end_array" c:identifier="json_builder_end_array">
824 <doc xml:space="preserve">Closes the subarray inside the given @builder that was opened by the most
825 recent call to json_builder_begin_array().
827 Cannot be called after json_builder_set_member_name().</doc>
828 <return-value transfer-ownership="none">
829 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
830 <type name="Builder" c:type="JsonBuilder*"/>
833 <instance-parameter name="builder" transfer-ownership="none">
834 <doc xml:space="preserve">a #JsonBuilder</doc>
835 <type name="Builder" c:type="JsonBuilder*"/>
836 </instance-parameter>
839 <method name="end_object" c:identifier="json_builder_end_object">
840 <doc xml:space="preserve">Closes the subobject inside the given @builder that was opened by the most
841 recent call to json_builder_begin_object().
843 Cannot be called after json_builder_set_member_name().</doc>
844 <return-value transfer-ownership="none">
845 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
846 <type name="Builder" c:type="JsonBuilder*"/>
849 <instance-parameter name="builder" transfer-ownership="none">
850 <doc xml:space="preserve">a #JsonBuilder</doc>
851 <type name="Builder" c:type="JsonBuilder*"/>
852 </instance-parameter>
855 <method name="get_root" c:identifier="json_builder_get_root">
856 <doc xml:space="preserve">Returns the root of the current constructed tree, if the build is complete
857 (ie: all opened objects, object members and arrays are being closed).</doc>
858 <return-value transfer-ownership="full">
859 <doc xml:space="preserve">the #JsonNode, or %NULL if the build is not complete.
860 Free the returned value with json_node_unref().</doc>
861 <type name="Node" c:type="JsonNode*"/>
864 <instance-parameter name="builder" transfer-ownership="none">
865 <doc xml:space="preserve">a #JsonBuilder</doc>
866 <type name="Builder" c:type="JsonBuilder*"/>
867 </instance-parameter>
870 <method name="reset" c:identifier="json_builder_reset">
871 <doc xml:space="preserve">Resets the state of the @builder back to its initial state.</doc>
872 <return-value transfer-ownership="none">
873 <type name="none" c:type="void"/>
876 <instance-parameter name="builder" transfer-ownership="none">
877 <doc xml:space="preserve">a #JsonBuilder</doc>
878 <type name="Builder" c:type="JsonBuilder*"/>
879 </instance-parameter>
882 <method name="set_member_name"
883 c:identifier="json_builder_set_member_name">
884 <doc xml:space="preserve">Set the name of the next member in an object. The next call must add a value,
885 open an object or an array.
887 Can be called only if the call is associated to an object.</doc>
888 <return-value transfer-ownership="none">
889 <doc xml:space="preserve">the #JsonBuilder, or %NULL if the call was inconsistent</doc>
890 <type name="Builder" c:type="JsonBuilder*"/>
893 <instance-parameter name="builder" transfer-ownership="none">
894 <doc xml:space="preserve">a #JsonBuilder</doc>
895 <type name="Builder" c:type="JsonBuilder*"/>
896 </instance-parameter>
897 <parameter name="member_name" transfer-ownership="none">
898 <doc xml:space="preserve">the name of the member</doc>
899 <type name="utf8" c:type="const gchar*"/>
903 <property name="immutable"
907 transfer-ownership="none">
908 <doc xml:space="preserve">Whether the #JsonNode tree built by the #JsonBuilder should be immutable
909 when created. Making the output immutable on creation avoids the expense
910 of traversing it to make it immutable later.</doc>
911 <type name="gboolean" c:type="gboolean"/>
913 <field name="parent_instance" readable="0" private="1">
914 <type name="GObject.Object" c:type="GObject"/>
916 <field name="priv" readable="0" private="1">
917 <type name="BuilderPrivate" c:type="JsonBuilderPrivate*"/>
920 <record name="BuilderClass"
921 c:type="JsonBuilderClass"
922 glib:is-gtype-struct-for="Builder"
924 <doc xml:space="preserve">The `JsonBuilderClass` structure contains only private data</doc>
925 <field name="parent_class" readable="0" private="1">
926 <type name="GObject.ObjectClass" c:type="GObjectClass"/>
928 <field name="_json_reserved1" introspectable="0">
929 <callback name="_json_reserved1">
930 <return-value transfer-ownership="none">
931 <type name="none" c:type="void"/>
935 <field name="_json_reserved2" introspectable="0">
936 <callback name="_json_reserved2">
937 <return-value transfer-ownership="none">
938 <type name="none" c:type="void"/>
943 <record name="BuilderPrivate" c:type="JsonBuilderPrivate" disguised="1">
945 <class name="Generator"
946 c:symbol-prefix="generator"
947 c:type="JsonGenerator"
948 parent="GObject.Object"
949 glib:type-name="JsonGenerator"
950 glib:get-type="json_generator_get_type"
951 glib:type-struct="GeneratorClass">
952 <doc xml:space="preserve">JSON data streams generator. The contents of the #JsonGenerator structure
953 are private and should only be accessed via the provided API.</doc>
954 <constructor name="new" c:identifier="json_generator_new">
955 <doc xml:space="preserve">Creates a new #JsonGenerator. You can use this object to generate a
956 JSON data stream starting from a data object model composed by
958 <return-value transfer-ownership="full">
959 <doc xml:space="preserve">the newly created #JsonGenerator instance</doc>
960 <type name="Generator" c:type="JsonGenerator*"/>
963 <method name="get_indent"
964 c:identifier="json_generator_get_indent"
966 <doc xml:space="preserve">Retrieves the value set using json_generator_set_indent().</doc>
967 <return-value transfer-ownership="none">
968 <doc xml:space="preserve">the number of repetitions per indentation level</doc>
969 <type name="guint" c:type="guint"/>
972 <instance-parameter name="generator" transfer-ownership="none">
973 <doc xml:space="preserve">a #JsonGenerator</doc>
974 <type name="Generator" c:type="JsonGenerator*"/>
975 </instance-parameter>
978 <method name="get_indent_char"
979 c:identifier="json_generator_get_indent_char"
981 <doc xml:space="preserve">Retrieves the value set using json_generator_set_indent_char().</doc>
982 <return-value transfer-ownership="none">
983 <doc xml:space="preserve">the character to be used when indenting</doc>
984 <type name="gunichar" c:type="gunichar"/>
987 <instance-parameter name="generator" transfer-ownership="none">
988 <doc xml:space="preserve">a #JsonGenerator</doc>
989 <type name="Generator" c:type="JsonGenerator*"/>
990 </instance-parameter>
993 <method name="get_pretty"
994 c:identifier="json_generator_get_pretty"
996 <doc xml:space="preserve">Retrieves the value set using json_generator_set_pretty().</doc>
997 <return-value transfer-ownership="none">
998 <doc xml:space="preserve">%TRUE if the generated JSON should be pretty-printed, and
999 %FALSE otherwise</doc>
1000 <type name="gboolean" c:type="gboolean"/>
1003 <instance-parameter name="generator" transfer-ownership="none">
1004 <doc xml:space="preserve">a #JsonGenerator</doc>
1005 <type name="Generator" c:type="JsonGenerator*"/>
1006 </instance-parameter>
1009 <method name="get_root"
1010 c:identifier="json_generator_get_root"
1012 <doc xml:space="preserve">Retrieves a pointer to the root #JsonNode set using
1013 json_generator_set_root().</doc>
1014 <return-value transfer-ownership="none">
1015 <doc xml:space="preserve">a #JsonNode, or %NULL. The returned node
1016 is owned by the #JsonGenerator and it should not be freed</doc>
1017 <type name="Node" c:type="JsonNode*"/>
1020 <instance-parameter name="generator" transfer-ownership="none">
1021 <doc xml:space="preserve">a #JsonGenerator</doc>
1022 <type name="Generator" c:type="JsonGenerator*"/>
1023 </instance-parameter>
1026 <method name="set_indent"
1027 c:identifier="json_generator_set_indent"
1029 <doc xml:space="preserve">Sets the number of repetitions for each indentation level.</doc>
1030 <return-value transfer-ownership="none">
1031 <type name="none" c:type="void"/>
1034 <instance-parameter name="generator" transfer-ownership="none">
1035 <doc xml:space="preserve">a #JsonGenerator</doc>
1036 <type name="Generator" c:type="JsonGenerator*"/>
1037 </instance-parameter>
1038 <parameter name="indent_level" transfer-ownership="none">
1039 <doc xml:space="preserve">the number of repetitions of the indentation character
1040 that should be applied when pretty printing</doc>
1041 <type name="guint" c:type="guint"/>
1045 <method name="set_indent_char"
1046 c:identifier="json_generator_set_indent_char"
1048 <doc xml:space="preserve">Sets the character to be used when indenting</doc>
1049 <return-value transfer-ownership="none">
1050 <type name="none" c:type="void"/>
1053 <instance-parameter name="generator" transfer-ownership="none">
1054 <doc xml:space="preserve">a #JsonGenerator</doc>
1055 <type name="Generator" c:type="JsonGenerator*"/>
1056 </instance-parameter>
1057 <parameter name="indent_char" transfer-ownership="none">
1058 <doc xml:space="preserve">a Unicode character to be used when indenting</doc>
1059 <type name="gunichar" c:type="gunichar"/>
1063 <method name="set_pretty"
1064 c:identifier="json_generator_set_pretty"
1066 <doc xml:space="preserve">Sets whether the generated JSON should be pretty printed, using the
1067 indentation character specified in the #JsonGenerator:indent-char
1068 property and the spacing specified in #JsonGenerator:indent property.</doc>
1069 <return-value transfer-ownership="none">
1070 <type name="none" c:type="void"/>
1073 <instance-parameter name="generator" transfer-ownership="none">
1074 <doc xml:space="preserve">a #JsonGenerator</doc>
1075 <type name="Generator" c:type="JsonGenerator*"/>
1076 </instance-parameter>
1077 <parameter name="is_pretty" transfer-ownership="none">
1078 <doc xml:space="preserve">whether the generated string should be pretty printed</doc>
1079 <type name="gboolean" c:type="gboolean"/>
1083 <method name="set_root" c:identifier="json_generator_set_root">
1084 <doc xml:space="preserve">Sets @node as the root of the JSON data stream to be serialized by
1087 The passed @node is copied by the generator object, so it can be
1088 safely freed after calling this function.</doc>
1089 <return-value transfer-ownership="none">
1090 <type name="none" c:type="void"/>
1093 <instance-parameter name="generator" transfer-ownership="none">
1094 <doc xml:space="preserve">a #JsonGenerator</doc>
1095 <type name="Generator" c:type="JsonGenerator*"/>
1096 </instance-parameter>
1097 <parameter name="node" transfer-ownership="none">
1098 <doc xml:space="preserve">a #JsonNode</doc>
1099 <type name="Node" c:type="JsonNode*"/>
1103 <method name="to_data" c:identifier="json_generator_to_data">
1104 <doc xml:space="preserve">Generates a JSON data stream from @generator and returns it as a
1106 <return-value transfer-ownership="full">
1107 <doc xml:space="preserve">a newly allocated buffer holding a JSON data stream.
1108 Use g_free() to free the allocated resources.</doc>
1109 <type name="utf8" c:type="gchar*"/>
1112 <instance-parameter name="generator" transfer-ownership="none">
1113 <doc xml:space="preserve">a #JsonGenerator</doc>
1114 <type name="Generator" c:type="JsonGenerator*"/>
1115 </instance-parameter>
1116 <parameter name="length"
1118 caller-allocates="0"
1119 transfer-ownership="full">
1120 <doc xml:space="preserve">return location for the length of the returned
1121 buffer, or %NULL</doc>
1122 <type name="gsize" c:type="gsize*"/>
1126 <method name="to_file" c:identifier="json_generator_to_file" throws="1">
1127 <doc xml:space="preserve">Creates a JSON data stream and puts it inside @filename, overwriting the
1128 current file contents. This operation is atomic.</doc>
1129 <return-value transfer-ownership="none">
1130 <doc xml:space="preserve">%TRUE if saving was successful.</doc>
1131 <type name="gboolean" c:type="gboolean"/>
1134 <instance-parameter name="generator" transfer-ownership="none">
1135 <doc xml:space="preserve">a #JsonGenerator</doc>
1136 <type name="Generator" c:type="JsonGenerator*"/>
1137 </instance-parameter>
1138 <parameter name="filename" transfer-ownership="none">
1139 <doc xml:space="preserve">path to the target file</doc>
1140 <type name="utf8" c:type="const gchar*"/>
1144 <method name="to_stream"
1145 c:identifier="json_generator_to_stream"
1148 <doc xml:space="preserve">Outputs JSON data and streams it (synchronously) to @stream.</doc>
1149 <return-value transfer-ownership="none">
1150 <doc xml:space="preserve">%TRUE if the write operation was successful, and %FALSE
1151 on failure. In case of error, the #GError will be filled accordingly</doc>
1152 <type name="gboolean" c:type="gboolean"/>
1155 <instance-parameter name="generator" transfer-ownership="none">
1156 <doc xml:space="preserve">a #JsonGenerator</doc>
1157 <type name="Generator" c:type="JsonGenerator*"/>
1158 </instance-parameter>
1159 <parameter name="stream" transfer-ownership="none">
1160 <doc xml:space="preserve">a #GOutputStream</doc>
1161 <type name="Gio.OutputStream" c:type="GOutputStream*"/>
1163 <parameter name="cancellable"
1164 transfer-ownership="none"
1167 <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
1168 <type name="Gio.Cancellable" c:type="GCancellable*"/>
1172 <property name="indent" writable="1" transfer-ownership="none">
1173 <doc xml:space="preserve">Number of spaces to be used to indent when pretty printing.</doc>
1174 <type name="guint" c:type="guint"/>
1176 <property name="indent-char"
1179 transfer-ownership="none">
1180 <doc xml:space="preserve">The character that should be used when indenting in pretty print.</doc>
1181 <type name="guint" c:type="guint"/>
1183 <property name="pretty" writable="1" transfer-ownership="none">
1184 <doc xml:space="preserve">Whether the output should be "pretty-printed", with indentation and
1185 newlines. The indentation level can be controlled by using the
1186 JsonGenerator:indent property</doc>
1187 <type name="gboolean" c:type="gboolean"/>
1189 <property name="root"
1192 transfer-ownership="none">
1193 <doc xml:space="preserve">The root #JsonNode to be used when constructing a JSON data
1197 <field name="parent_instance" readable="0" private="1">
1198 <type name="GObject.Object" c:type="GObject"/>
1200 <field name="priv" readable="0" private="1">
1201 <type name="GeneratorPrivate" c:type="JsonGeneratorPrivate*"/>
1204 <record name="GeneratorClass"
1205 c:type="JsonGeneratorClass"
1206 glib:is-gtype-struct-for="Generator">
1207 <doc xml:space="preserve">#JsonGenerator class</doc>
1208 <field name="parent_class" readable="0" private="1">
1209 <type name="GObject.ObjectClass" c:type="GObjectClass"/>
1211 <field name="_json_reserved1" introspectable="0">
1212 <callback name="_json_reserved1">
1213 <return-value transfer-ownership="none">
1214 <type name="none" c:type="void"/>
1218 <field name="_json_reserved2" introspectable="0">
1219 <callback name="_json_reserved2">
1220 <return-value transfer-ownership="none">
1221 <type name="none" c:type="void"/>
1225 <field name="_json_reserved3" introspectable="0">
1226 <callback name="_json_reserved3">
1227 <return-value transfer-ownership="none">
1228 <type name="none" c:type="void"/>
1232 <field name="_json_reserved4" introspectable="0">
1233 <callback name="_json_reserved4">
1234 <return-value transfer-ownership="none">
1235 <type name="none" c:type="void"/>
1240 <record name="GeneratorPrivate"
1241 c:type="JsonGeneratorPrivate"
1244 <constant name="MAJOR_VERSION" value="1" c:type="JSON_MAJOR_VERSION">
1245 <doc xml:space="preserve">Json major version component (e.g. 1 if %JSON_VERSION is 1.2.3)</doc>
1246 <type name="gint" c:type="gint"/>
1248 <constant name="MICRO_VERSION" value="4" c:type="JSON_MICRO_VERSION">
1249 <doc xml:space="preserve">Json micro version component (e.g. 3 if %JSON_VERSION is 1.2.3)</doc>
1250 <type name="gint" c:type="gint"/>
1252 <constant name="MINOR_VERSION" value="2" c:type="JSON_MINOR_VERSION">
1253 <doc xml:space="preserve">Json minor version component (e.g. 2 if %JSON_VERSION is 1.2.3)</doc>
1254 <type name="gint" c:type="gint"/>
1258 glib:type-name="JsonNode"
1259 glib:get-type="json_node_get_type"
1260 c:symbol-prefix="node">
1261 <doc xml:space="preserve">A generic container of JSON data types. The contents of the #JsonNode
1262 structure are private and should only be accessed via the provided
1263 functions and never directly.</doc>
1264 <constructor name="alloc" c:identifier="json_node_alloc" version="0.16">
1265 <doc xml:space="preserve">Allocates a new #JsonNode. Use json_node_init() and its variants
1266 to initialize the returned value.</doc>
1267 <return-value transfer-ownership="full">
1268 <doc xml:space="preserve">the newly allocated #JsonNode. Use
1269 json_node_free() to free the resources allocated by this function</doc>
1270 <type name="Node" c:type="JsonNode*"/>
1273 <constructor name="new" c:identifier="json_node_new">
1274 <doc xml:space="preserve">Creates a new #JsonNode of @type.
1276 This is a convenience function for json_node_alloc() and json_node_init(),
1277 and it's the equivalent of:
1279 |[<!-- language="C" -->
1280 json_node_init (json_node_alloc (), type);
1282 <return-value transfer-ownership="full">
1283 <doc xml:space="preserve">the newly created #JsonNode</doc>
1284 <type name="Node" c:type="JsonNode*"/>
1287 <parameter name="type" transfer-ownership="none">
1288 <doc xml:space="preserve">a #JsonNodeType</doc>
1289 <type name="NodeType" c:type="JsonNodeType"/>
1293 <method name="copy" c:identifier="json_node_copy">
1294 <doc xml:space="preserve">Copies @node. If the node contains complex data types, their reference
1295 counts are increased, regardless of whether the node is mutable or
1298 The copy will be immutable if, and only if, @node is immutable. However,
1299 there should be no need to copy an immutable node.</doc>
1300 <return-value transfer-ownership="full">
1301 <doc xml:space="preserve">the copied #JsonNode</doc>
1302 <type name="Node" c:type="JsonNode*"/>
1305 <instance-parameter name="node" transfer-ownership="none">
1306 <doc xml:space="preserve">a #JsonNode</doc>
1307 <type name="Node" c:type="JsonNode*"/>
1308 </instance-parameter>
1311 <method name="dup_array" c:identifier="json_node_dup_array">
1312 <doc xml:space="preserve">Retrieves the #JsonArray stored inside a #JsonNode and returns it
1313 with its reference count increased by one. If the node does not hold an
1314 array value, %NULL is returned.</doc>
1315 <return-value transfer-ownership="full" nullable="1">
1316 <doc xml:space="preserve">the #JsonArray with its reference
1317 count increased.</doc>
1318 <type name="Array" c:type="JsonArray*"/>
1321 <instance-parameter name="node" transfer-ownership="none">
1322 <doc xml:space="preserve">a #JsonNode</doc>
1323 <type name="Node" c:type="JsonNode*"/>
1324 </instance-parameter>
1327 <method name="dup_object" c:identifier="json_node_dup_object">
1328 <doc xml:space="preserve">Retrieves the #JsonObject inside @node. The reference count of
1329 the returned object is increased. If the node does not hold an object value,
1330 %NULL is returned.</doc>
1331 <return-value transfer-ownership="full" nullable="1">
1332 <doc xml:space="preserve">the #JsonObject</doc>
1333 <type name="Object" c:type="JsonObject*"/>
1336 <instance-parameter name="node" transfer-ownership="none">
1337 <doc xml:space="preserve">a #JsonNode</doc>
1338 <type name="Node" c:type="JsonNode*"/>
1339 </instance-parameter>
1342 <method name="dup_string" c:identifier="json_node_dup_string">
1343 <doc xml:space="preserve">Gets a copy of the string value stored inside a #JsonNode. If the node does
1344 not hold a string value, %NULL is returned.</doc>
1345 <return-value transfer-ownership="full" nullable="1">
1346 <doc xml:space="preserve">a newly allocated string
1347 containing a copy of the #JsonNode contents. Use g_free() to free the
1348 allocated resources</doc>
1349 <type name="utf8" c:type="gchar*"/>
1352 <instance-parameter name="node" transfer-ownership="none">
1353 <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1354 <type name="Node" c:type="JsonNode*"/>
1355 </instance-parameter>
1358 <method name="equal" c:identifier="json_node_equal" version="1.2">
1359 <doc xml:space="preserve">Check whether @a and @b are equal #JsonNodes, meaning they have the same
1360 type and same values (checked recursively). Note that integer values are
1361 compared numerically, ignoring type, so a double value 4.0 is equal to the
1362 integer value 4.</doc>
1363 <return-value transfer-ownership="none">
1364 <doc xml:space="preserve">%TRUE if @a and @b are equal; %FALSE otherwise</doc>
1365 <type name="gboolean" c:type="gboolean"/>
1368 <instance-parameter name="a" transfer-ownership="none">
1369 <doc xml:space="preserve">a JSON node</doc>
1370 <type name="Node" c:type="gconstpointer"/>
1371 </instance-parameter>
1372 <parameter name="b" transfer-ownership="none">
1373 <doc xml:space="preserve">another JSON node</doc>
1374 <type name="Node" c:type="gconstpointer"/>
1378 <method name="free" c:identifier="json_node_free">
1379 <doc xml:space="preserve">Frees the resources allocated by @node.</doc>
1380 <return-value transfer-ownership="none">
1381 <type name="none" c:type="void"/>
1384 <instance-parameter name="node" transfer-ownership="none">
1385 <doc xml:space="preserve">a #JsonNode</doc>
1386 <type name="Node" c:type="JsonNode*"/>
1387 </instance-parameter>
1390 <method name="get_array" c:identifier="json_node_get_array">
1391 <doc xml:space="preserve">Retrieves the #JsonArray stored inside a #JsonNode. If the node does not
1392 hold an array value, %NULL is returned.</doc>
1393 <return-value transfer-ownership="none" nullable="1">
1394 <doc xml:space="preserve">the #JsonArray</doc>
1395 <type name="Array" c:type="JsonArray*"/>
1398 <instance-parameter name="node" transfer-ownership="none">
1399 <doc xml:space="preserve">a #JsonNode</doc>
1400 <type name="Node" c:type="JsonNode*"/>
1401 </instance-parameter>
1404 <method name="get_boolean" c:identifier="json_node_get_boolean">
1405 <doc xml:space="preserve">Gets the boolean value stored inside a #JsonNode. If the node holds an
1406 integer or double value which is zero, %FALSE is returned; otherwise %TRUE
1407 is returned. If the node holds a %JSON_NODE_NULL value or a value of another
1408 non-boolean type, %FALSE is returned.</doc>
1409 <return-value transfer-ownership="none">
1410 <doc xml:space="preserve">a boolean value.</doc>
1411 <type name="gboolean" c:type="gboolean"/>
1414 <instance-parameter name="node" transfer-ownership="none">
1415 <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1416 <type name="Node" c:type="JsonNode*"/>
1417 </instance-parameter>
1420 <method name="get_double" c:identifier="json_node_get_double">
1421 <doc xml:space="preserve">Gets the double value stored inside a #JsonNode. If the node holds an integer
1422 value, it is returned as a double. If the node holds a %FALSE boolean value,
1423 `0.0` is returned; otherwise a non-zero double is returned. If the node holds
1424 a %JSON_NODE_NULL value or a value of another non-double type, `0.0` is
1426 <return-value transfer-ownership="none">
1427 <doc xml:space="preserve">a double value.</doc>
1428 <type name="gdouble" c:type="gdouble"/>
1431 <instance-parameter name="node" transfer-ownership="none">
1432 <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1433 <type name="Node" c:type="JsonNode*"/>
1434 </instance-parameter>
1437 <method name="get_int" c:identifier="json_node_get_int">
1438 <doc xml:space="preserve">Gets the integer value stored inside a #JsonNode. If the node holds a double
1439 value, its integer component is returned. If the node holds a %FALSE boolean
1440 value, `0` is returned; otherwise a non-zero integer is returned. If the
1441 node holds a %JSON_NODE_NULL value or a value of another non-integer type,
1442 `0` is returned.</doc>
1443 <return-value transfer-ownership="none">
1444 <doc xml:space="preserve">an integer value.</doc>
1445 <type name="gint64" c:type="gint64"/>
1448 <instance-parameter name="node" transfer-ownership="none">
1449 <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1450 <type name="Node" c:type="JsonNode*"/>
1451 </instance-parameter>
1454 <method name="get_node_type"
1455 c:identifier="json_node_get_node_type"
1457 <doc xml:space="preserve">Retrieves the #JsonNodeType of @node</doc>
1458 <return-value transfer-ownership="none">
1459 <doc xml:space="preserve">the type of the node</doc>
1460 <type name="NodeType" c:type="JsonNodeType"/>
1463 <instance-parameter name="node" transfer-ownership="none">
1464 <doc xml:space="preserve">a #JsonNode</doc>
1465 <type name="Node" c:type="JsonNode*"/>
1466 </instance-parameter>
1469 <method name="get_object" c:identifier="json_node_get_object">
1470 <doc xml:space="preserve">Retrieves the #JsonObject stored inside a #JsonNode. If the node does not
1471 hold an object value, %NULL is returned.</doc>
1472 <return-value transfer-ownership="none" nullable="1">
1473 <doc xml:space="preserve">the #JsonObject</doc>
1474 <type name="Object" c:type="JsonObject*"/>
1477 <instance-parameter name="node" transfer-ownership="none">
1478 <doc xml:space="preserve">a #JsonNode</doc>
1479 <type name="Node" c:type="JsonNode*"/>
1480 </instance-parameter>
1483 <method name="get_parent" c:identifier="json_node_get_parent">
1484 <doc xml:space="preserve">Retrieves the parent #JsonNode of @node.</doc>
1485 <return-value transfer-ownership="none" nullable="1">
1486 <doc xml:space="preserve">the parent node, or %NULL if @node
1487 is the root node</doc>
1488 <type name="Node" c:type="JsonNode*"/>
1491 <instance-parameter name="node" transfer-ownership="none">
1492 <doc xml:space="preserve">a #JsonNode</doc>
1493 <type name="Node" c:type="JsonNode*"/>
1494 </instance-parameter>
1497 <method name="get_string" c:identifier="json_node_get_string">
1498 <doc xml:space="preserve">Gets the string value stored inside a #JsonNode. If the node does not hold a
1499 string value, %NULL is returned.</doc>
1500 <return-value transfer-ownership="none" nullable="1">
1501 <doc xml:space="preserve">a string value.</doc>
1502 <type name="utf8" c:type="const gchar*"/>
1505 <instance-parameter name="node" transfer-ownership="none">
1506 <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1507 <type name="Node" c:type="JsonNode*"/>
1508 </instance-parameter>
1511 <method name="get_value" c:identifier="json_node_get_value">
1512 <doc xml:space="preserve">Retrieves a value from a #JsonNode and copies into @value. When done
1513 using it, call g_value_unset() on the #GValue. If the node does not hold a
1514 scalar value, @value is not modified.</doc>
1515 <return-value transfer-ownership="none">
1516 <type name="none" c:type="void"/>
1519 <instance-parameter name="node" transfer-ownership="none">
1520 <doc xml:space="preserve">a #JsonNode</doc>
1521 <type name="Node" c:type="JsonNode*"/>
1522 </instance-parameter>
1523 <parameter name="value"
1525 caller-allocates="1"
1526 transfer-ownership="none">
1527 <doc xml:space="preserve">return location for an uninitialized value</doc>
1528 <type name="GObject.Value" c:type="GValue*"/>
1532 <method name="get_value_type"
1533 c:identifier="json_node_get_value_type"
1535 <doc xml:space="preserve">Returns the #GType of the payload of the node.</doc>
1536 <return-value transfer-ownership="none">
1537 <doc xml:space="preserve">a #GType for the payload.</doc>
1538 <type name="GType" c:type="GType"/>
1541 <instance-parameter name="node" transfer-ownership="none">
1542 <doc xml:space="preserve">a #JsonNode</doc>
1543 <type name="Node" c:type="JsonNode*"/>
1544 </instance-parameter>
1547 <method name="hash" c:identifier="json_node_hash" version="1.2">
1548 <doc xml:space="preserve">Calculate a hash value for the given @key (a #JsonNode).
1550 The hash is calculated over the node and its value, recursively. If the node
1551 is immutable, this is a fast operation; otherwise, it scales proportionally
1552 with the size of the node’s value (for example, with the number of members
1553 in the #JsonObject if this node contains an object).</doc>
1554 <return-value transfer-ownership="none">
1555 <doc xml:space="preserve">hash value for @key</doc>
1556 <type name="guint" c:type="guint"/>
1559 <instance-parameter name="key" transfer-ownership="none">
1560 <doc xml:space="preserve">a JSON node to hash</doc>
1561 <type name="Node" c:type="gconstpointer"/>
1562 </instance-parameter>
1565 <method name="init" c:identifier="json_node_init" version="0.16">
1566 <doc xml:space="preserve">Initializes a @node to a specific @type.
1568 If the node has already been initialized once, it will be reset to
1569 the given type, and any data contained will be cleared.</doc>
1570 <return-value transfer-ownership="none">
1571 <doc xml:space="preserve">the initialized #JsonNode</doc>
1572 <type name="Node" c:type="JsonNode*"/>
1575 <instance-parameter name="node" transfer-ownership="none">
1576 <doc xml:space="preserve">the #JsonNode to initialize</doc>
1577 <type name="Node" c:type="JsonNode*"/>
1578 </instance-parameter>
1579 <parameter name="type" transfer-ownership="none">
1580 <doc xml:space="preserve">the type of JSON node to initialize @node to</doc>
1581 <type name="NodeType" c:type="JsonNodeType"/>
1585 <method name="init_array"
1586 c:identifier="json_node_init_array"
1588 <doc xml:space="preserve">Initializes @node to %JSON_NODE_ARRAY and sets @array into it.
1590 This function will take a reference on @array.
1592 If the node has already been initialized once, it will be reset to
1593 the given type, and any data contained will be cleared.</doc>
1594 <return-value transfer-ownership="none">
1595 <doc xml:space="preserve">the initialized #JsonNode</doc>
1596 <type name="Node" c:type="JsonNode*"/>
1599 <instance-parameter name="node" transfer-ownership="none">
1600 <doc xml:space="preserve">the #JsonNode to initialize</doc>
1601 <type name="Node" c:type="JsonNode*"/>
1602 </instance-parameter>
1603 <parameter name="array"
1604 transfer-ownership="none"
1607 <doc xml:space="preserve">the #JsonArray to initialize @node with, or %NULL</doc>
1608 <type name="Array" c:type="JsonArray*"/>
1612 <method name="init_boolean"
1613 c:identifier="json_node_init_boolean"
1615 <doc xml:space="preserve">Initializes @node to %JSON_NODE_VALUE and sets @value into it.
1617 If the node has already been initialized once, it will be reset to
1618 the given type, and any data contained will be cleared.</doc>
1619 <return-value transfer-ownership="none">
1620 <doc xml:space="preserve">the initialized #JsonNode</doc>
1621 <type name="Node" c:type="JsonNode*"/>
1624 <instance-parameter name="node" transfer-ownership="none">
1625 <doc xml:space="preserve">the #JsonNode to initialize</doc>
1626 <type name="Node" c:type="JsonNode*"/>
1627 </instance-parameter>
1628 <parameter name="value" transfer-ownership="none">
1629 <doc xml:space="preserve">a boolean value</doc>
1630 <type name="gboolean" c:type="gboolean"/>
1634 <method name="init_double"
1635 c:identifier="json_node_init_double"
1637 <doc xml:space="preserve">Initializes @node to %JSON_NODE_VALUE and sets @value into it.
1639 If the node has already been initialized once, it will be reset to
1640 the given type, and any data contained will be cleared.</doc>
1641 <return-value transfer-ownership="none">
1642 <doc xml:space="preserve">the initialized #JsonNode</doc>
1643 <type name="Node" c:type="JsonNode*"/>
1646 <instance-parameter name="node" transfer-ownership="none">
1647 <doc xml:space="preserve">the #JsonNode to initialize</doc>
1648 <type name="Node" c:type="JsonNode*"/>
1649 </instance-parameter>
1650 <parameter name="value" transfer-ownership="none">
1651 <doc xml:space="preserve">a floating point value</doc>
1652 <type name="gdouble" c:type="gdouble"/>
1656 <method name="init_int" c:identifier="json_node_init_int" version="0.16">
1657 <doc xml:space="preserve">Initializes @node to %JSON_NODE_VALUE and sets @value into it.
1659 If the node has already been initialized once, it will be reset to
1660 the given type, and any data contained will be cleared.</doc>
1661 <return-value transfer-ownership="none">
1662 <doc xml:space="preserve">the initialized #JsonNode</doc>
1663 <type name="Node" c:type="JsonNode*"/>
1666 <instance-parameter name="node" transfer-ownership="none">
1667 <doc xml:space="preserve">the #JsonNode to initialize</doc>
1668 <type name="Node" c:type="JsonNode*"/>
1669 </instance-parameter>
1670 <parameter name="value" transfer-ownership="none">
1671 <doc xml:space="preserve">an integer</doc>
1672 <type name="gint64" c:type="gint64"/>
1676 <method name="init_null"
1677 c:identifier="json_node_init_null"
1679 <doc xml:space="preserve">Initializes @node to %JSON_NODE_NULL.
1681 If the node has already been initialized once, it will be reset to
1682 the given type, and any data contained will be cleared.</doc>
1683 <return-value transfer-ownership="none">
1684 <doc xml:space="preserve">the initialized #JsonNode</doc>
1685 <type name="Node" c:type="JsonNode*"/>
1688 <instance-parameter name="node" transfer-ownership="none">
1689 <doc xml:space="preserve">the #JsonNode to initialize</doc>
1690 <type name="Node" c:type="JsonNode*"/>
1691 </instance-parameter>
1694 <method name="init_object"
1695 c:identifier="json_node_init_object"
1697 <doc xml:space="preserve">Initializes @node to %JSON_NODE_OBJECT and sets @object into it.
1699 This function will take a reference on @object.
1701 If the node has already been initialized once, it will be reset to
1702 the given type, and any data contained will be cleared.</doc>
1703 <return-value transfer-ownership="none">
1704 <doc xml:space="preserve">the initialized #JsonNode</doc>
1705 <type name="Node" c:type="JsonNode*"/>
1708 <instance-parameter name="node" transfer-ownership="none">
1709 <doc xml:space="preserve">the #JsonNode to initialize</doc>
1710 <type name="Node" c:type="JsonNode*"/>
1711 </instance-parameter>
1712 <parameter name="object"
1713 transfer-ownership="none"
1716 <doc xml:space="preserve">the #JsonObject to initialize @node with, or %NULL</doc>
1717 <type name="Object" c:type="JsonObject*"/>
1721 <method name="init_string"
1722 c:identifier="json_node_init_string"
1724 <doc xml:space="preserve">Initializes @node to %JSON_NODE_VALUE and sets @value into it.
1726 If the node has already been initialized once, it will be reset to
1727 the given type, and any data contained will be cleared.</doc>
1728 <return-value transfer-ownership="none">
1729 <doc xml:space="preserve">the initialized #JsonNode</doc>
1730 <type name="Node" c:type="JsonNode*"/>
1733 <instance-parameter name="node" transfer-ownership="none">
1734 <doc xml:space="preserve">the #JsonNode to initialize</doc>
1735 <type name="Node" c:type="JsonNode*"/>
1736 </instance-parameter>
1737 <parameter name="value"
1738 transfer-ownership="none"
1741 <doc xml:space="preserve">a string value</doc>
1742 <type name="utf8" c:type="const char*"/>
1746 <method name="is_immutable"
1747 c:identifier="json_node_is_immutable"
1749 <doc xml:space="preserve">Check whether the given @node has been marked as immutable by calling
1750 json_node_seal() on it.</doc>
1751 <return-value transfer-ownership="none">
1752 <doc xml:space="preserve">%TRUE if the @node is immutable</doc>
1753 <type name="gboolean" c:type="gboolean"/>
1756 <instance-parameter name="node" transfer-ownership="none">
1757 <doc xml:space="preserve">a #JsonNode</doc>
1758 <type name="Node" c:type="JsonNode*"/>
1759 </instance-parameter>
1762 <method name="is_null" c:identifier="json_node_is_null" version="0.8">
1763 <doc xml:space="preserve">Checks whether @node is a %JSON_NODE_NULL.
1765 A %JSON_NODE_NULL node is not the same as a %NULL #JsonNode; a
1766 %JSON_NODE_NULL represents a 'null' value in the JSON tree.</doc>
1767 <return-value transfer-ownership="none">
1768 <doc xml:space="preserve">%TRUE if the node is null</doc>
1769 <type name="gboolean" c:type="gboolean"/>
1772 <instance-parameter name="node" transfer-ownership="none">
1773 <doc xml:space="preserve">a #JsonNode</doc>
1774 <type name="Node" c:type="JsonNode*"/>
1775 </instance-parameter>
1778 <method name="ref" c:identifier="json_node_ref" version="1.2">
1779 <doc xml:space="preserve">Increment the reference count of @node.</doc>
1780 <return-value transfer-ownership="full">
1781 <doc xml:space="preserve">a pointer to @node</doc>
1782 <type name="Node" c:type="JsonNode*"/>
1785 <instance-parameter name="node" transfer-ownership="none">
1786 <doc xml:space="preserve">a #JsonNode</doc>
1787 <type name="Node" c:type="JsonNode*"/>
1788 </instance-parameter>
1791 <method name="seal" c:identifier="json_node_seal" version="1.2">
1792 <doc xml:space="preserve">Seals the #JsonNode, making it immutable to further changes. In order to be
1793 sealed, the @node must have a type and value set. The value will be
1794 recursively sealed — if the node holds an object, that #JsonObject will be
1797 If the @node is already immutable, this is a no-op.</doc>
1798 <return-value transfer-ownership="none">
1799 <type name="none" c:type="void"/>
1802 <instance-parameter name="node" transfer-ownership="none">
1803 <doc xml:space="preserve">a #JsonNode</doc>
1804 <type name="Node" c:type="JsonNode*"/>
1805 </instance-parameter>
1808 <method name="set_array" c:identifier="json_node_set_array">
1809 <doc xml:space="preserve">Sets @array inside @node and increases the #JsonArray reference count.
1811 It is an error to call this on an immutable node.</doc>
1812 <return-value transfer-ownership="none">
1813 <type name="none" c:type="void"/>
1816 <instance-parameter name="node" transfer-ownership="none">
1817 <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_ARRAY</doc>
1818 <type name="Node" c:type="JsonNode*"/>
1819 </instance-parameter>
1820 <parameter name="array" transfer-ownership="none">
1821 <doc xml:space="preserve">a #JsonArray</doc>
1822 <type name="Array" c:type="JsonArray*"/>
1826 <method name="set_boolean" c:identifier="json_node_set_boolean">
1827 <doc xml:space="preserve">Sets @value as the boolean content of the @node, replacing any existing
1830 It is an error to call this on an immutable node.</doc>
1831 <return-value transfer-ownership="none">
1832 <type name="none" c:type="void"/>
1835 <instance-parameter name="node" transfer-ownership="none">
1836 <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1837 <type name="Node" c:type="JsonNode*"/>
1838 </instance-parameter>
1839 <parameter name="value" transfer-ownership="none">
1840 <doc xml:space="preserve">a boolean value</doc>
1841 <type name="gboolean" c:type="gboolean"/>
1845 <method name="set_double" c:identifier="json_node_set_double">
1846 <doc xml:space="preserve">Sets @value as the double content of the @node, replacing any existing
1849 It is an error to call this on an immutable node.</doc>
1850 <return-value transfer-ownership="none">
1851 <type name="none" c:type="void"/>
1854 <instance-parameter name="node" transfer-ownership="none">
1855 <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1856 <type name="Node" c:type="JsonNode*"/>
1857 </instance-parameter>
1858 <parameter name="value" transfer-ownership="none">
1859 <doc xml:space="preserve">a double value</doc>
1860 <type name="gdouble" c:type="gdouble"/>
1864 <method name="set_int" c:identifier="json_node_set_int">
1865 <doc xml:space="preserve">Sets @value as the integer content of the @node, replacing any existing
1868 It is an error to call this on an immutable node.</doc>
1869 <return-value transfer-ownership="none">
1870 <type name="none" c:type="void"/>
1873 <instance-parameter name="node" transfer-ownership="none">
1874 <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_VALUE</doc>
1875 <type name="Node" c:type="JsonNode*"/>
1876 </instance-parameter>
1877 <parameter name="value" transfer-ownership="none">
1878 <doc xml:space="preserve">an integer value</doc>
1879 <type name="gint64" c:type="gint64"/>
1883 <method name="set_object" c:identifier="json_node_set_object">
1884 <doc xml:space="preserve">Sets @objects inside @node. The reference count of @object is increased.
1886 If @object is %NULL, the node’s existing object is cleared.
1888 It is an error to call this on an immutable node.</doc>
1889 <return-value transfer-ownership="none">
1890 <type name="none" c:type="void"/>
1893 <instance-parameter name="node" transfer-ownership="none">
1894 <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_OBJECT</doc>
1895 <type name="Node" c:type="JsonNode*"/>
1896 </instance-parameter>
1897 <parameter name="object"
1898 transfer-ownership="none"
1901 <doc xml:space="preserve">a #JsonObject</doc>
1902 <type name="Object" c:type="JsonObject*"/>
1906 <method name="set_parent"
1907 c:identifier="json_node_set_parent"
1909 <doc xml:space="preserve">Sets the parent #JsonNode of @node.
1911 It is an error to call this with an immutable @parent. @node may be
1913 <return-value transfer-ownership="none">
1914 <type name="none" c:type="void"/>
1917 <instance-parameter name="node" transfer-ownership="none">
1918 <doc xml:space="preserve">a #JsonNode</doc>
1919 <type name="Node" c:type="JsonNode*"/>
1920 </instance-parameter>
1921 <parameter name="parent" transfer-ownership="none">
1922 <doc xml:space="preserve">the parent #JsonNode of @node</doc>
1923 <type name="Node" c:type="JsonNode*"/>
1927 <method name="set_string" c:identifier="json_node_set_string">
1928 <doc xml:space="preserve">Sets @value as the string content of the @node, replacing any existing
1931 It is an error to call this on an immutable node.</doc>
1932 <return-value transfer-ownership="none">
1933 <type name="none" c:type="void"/>
1936 <instance-parameter name="node" transfer-ownership="none">
1937 <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_VALUE</doc>
1938 <type name="Node" c:type="JsonNode*"/>
1939 </instance-parameter>
1940 <parameter name="value" transfer-ownership="none">
1941 <doc xml:space="preserve">a string value</doc>
1942 <type name="utf8" c:type="const gchar*"/>
1946 <method name="set_value" c:identifier="json_node_set_value">
1947 <doc xml:space="preserve">Sets @value inside @node. The passed #GValue is copied into the #JsonNode.
1949 It is an error to call this on an immutable node.</doc>
1950 <return-value transfer-ownership="none">
1951 <type name="none" c:type="void"/>
1954 <instance-parameter name="node" transfer-ownership="none">
1955 <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_VALUE</doc>
1956 <type name="Node" c:type="JsonNode*"/>
1957 </instance-parameter>
1958 <parameter name="value" transfer-ownership="none">
1959 <doc xml:space="preserve">the #GValue to set</doc>
1960 <type name="GObject.Value" c:type="const GValue*"/>
1964 <method name="take_array" c:identifier="json_node_take_array">
1965 <doc xml:space="preserve">Sets @array into @node without increasing the #JsonArray reference count.
1967 It is an error to call this on an immutable node.</doc>
1968 <return-value transfer-ownership="none">
1969 <type name="none" c:type="void"/>
1972 <instance-parameter name="node" transfer-ownership="none">
1973 <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_ARRAY</doc>
1974 <type name="Node" c:type="JsonNode*"/>
1975 </instance-parameter>
1976 <parameter name="array" transfer-ownership="full">
1977 <doc xml:space="preserve">a #JsonArray</doc>
1978 <type name="Array" c:type="JsonArray*"/>
1982 <method name="take_object" c:identifier="json_node_take_object">
1983 <doc xml:space="preserve">Sets @object inside @node. The reference count of @object is not increased.
1985 It is an error to call this on an immutable node.</doc>
1986 <return-value transfer-ownership="none">
1987 <type name="none" c:type="void"/>
1990 <instance-parameter name="node" transfer-ownership="none">
1991 <doc xml:space="preserve">a #JsonNode initialized to %JSON_NODE_OBJECT</doc>
1992 <type name="Node" c:type="JsonNode*"/>
1993 </instance-parameter>
1994 <parameter name="object" transfer-ownership="full">
1995 <doc xml:space="preserve">a #JsonObject</doc>
1996 <type name="Object" c:type="JsonObject*"/>
2000 <method name="type_name" c:identifier="json_node_type_name">
2001 <doc xml:space="preserve">Retrieves the user readable name of the data type contained by @node.</doc>
2002 <return-value transfer-ownership="none">
2003 <doc xml:space="preserve">a string containing the name of the type. The returned string
2004 is owned by the node and should never be modified or freed</doc>
2005 <type name="utf8" c:type="const gchar*"/>
2008 <instance-parameter name="node" transfer-ownership="none">
2009 <doc xml:space="preserve">a #JsonNode</doc>
2010 <type name="Node" c:type="JsonNode*"/>
2011 </instance-parameter>
2014 <method name="unref" c:identifier="json_node_unref" version="1.2">
2015 <doc xml:space="preserve">Decrement the reference count of @node. If it reaches zero, the node is
2017 <return-value transfer-ownership="none">
2018 <type name="none" c:type="void"/>
2021 <instance-parameter name="node" transfer-ownership="full">
2022 <doc xml:space="preserve">a #JsonNode</doc>
2023 <type name="Node" c:type="JsonNode*"/>
2024 </instance-parameter>
2028 <enumeration name="NodeType"
2029 glib:type-name="JsonNodeType"
2030 glib:get-type="json_node_type_get_type"
2031 c:type="JsonNodeType">
2032 <doc xml:space="preserve">Indicates the content of a #JsonNode.</doc>
2033 <member name="object"
2035 c:identifier="JSON_NODE_OBJECT"
2037 <doc xml:space="preserve">The node contains a #JsonObject</doc>
2039 <member name="array"
2041 c:identifier="JSON_NODE_ARRAY"
2043 <doc xml:space="preserve">The node contains a #JsonArray</doc>
2045 <member name="value"
2047 c:identifier="JSON_NODE_VALUE"
2049 <doc xml:space="preserve">The node contains a fundamental type</doc>
2053 c:identifier="JSON_NODE_NULL"
2055 <doc xml:space="preserve">Special type, for nodes containing null</doc>
2058 <record name="Object"
2060 glib:type-name="JsonObject"
2061 glib:get-type="json_object_get_type"
2062 c:symbol-prefix="object">
2063 <doc xml:space="preserve">A JSON object type. The contents of the #JsonObject structure are private
2064 and should only be accessed by the provided API</doc>
2065 <constructor name="new" c:identifier="json_object_new">
2066 <doc xml:space="preserve">Creates a new #JsonObject, an JSON object type representation.</doc>
2067 <return-value transfer-ownership="full">
2068 <doc xml:space="preserve">the newly created #JsonObject</doc>
2069 <type name="Object" c:type="JsonObject*"/>
2072 <method name="add_member"
2073 c:identifier="json_object_add_member"
2075 deprecated-version="0.8">
2076 <doc xml:space="preserve">Adds a member named @member_name and containing @node into a #JsonObject.
2077 The object will take ownership of the #JsonNode.
2079 This function will return if the @object already contains a member
2081 <doc-deprecated xml:space="preserve">Use json_object_set_member() instead</doc-deprecated>
2082 <return-value transfer-ownership="none">
2083 <type name="none" c:type="void"/>
2086 <instance-parameter name="object" transfer-ownership="none">
2087 <doc xml:space="preserve">a #JsonObject</doc>
2088 <type name="Object" c:type="JsonObject*"/>
2089 </instance-parameter>
2090 <parameter name="member_name" transfer-ownership="none">
2091 <doc xml:space="preserve">the name of the member</doc>
2092 <type name="utf8" c:type="const gchar*"/>
2094 <parameter name="node" transfer-ownership="full">
2095 <doc xml:space="preserve">the value of the member</doc>
2096 <type name="Node" c:type="JsonNode*"/>
2100 <method name="dup_member"
2101 c:identifier="json_object_dup_member"
2103 <doc xml:space="preserve">Retrieves a copy of the #JsonNode containing the value of @member_name
2104 inside a #JsonObject</doc>
2105 <return-value transfer-ownership="full">
2106 <doc xml:space="preserve">a copy of the node for the requested
2107 object member or %NULL. Use json_node_unref() when done.</doc>
2108 <type name="Node" c:type="JsonNode*"/>
2111 <instance-parameter name="object" transfer-ownership="none">
2112 <doc xml:space="preserve">a #JsonObject</doc>
2113 <type name="Object" c:type="JsonObject*"/>
2114 </instance-parameter>
2115 <parameter name="member_name" transfer-ownership="none">
2116 <doc xml:space="preserve">the name of the JSON object member to access</doc>
2117 <type name="utf8" c:type="const gchar*"/>
2121 <method name="equal" c:identifier="json_object_equal" version="1.2">
2122 <doc xml:space="preserve">Check whether @a and @b are equal #JsonObjects, meaning they have the same
2123 set of members, and the values of corresponding members are equal.</doc>
2124 <return-value transfer-ownership="none">
2125 <doc xml:space="preserve">%TRUE if @a and @b are equal; %FALSE otherwise</doc>
2126 <type name="gboolean" c:type="gboolean"/>
2129 <instance-parameter name="a" transfer-ownership="none">
2130 <doc xml:space="preserve">a JSON object</doc>
2131 <type name="Object" c:type="gconstpointer"/>
2132 </instance-parameter>
2133 <parameter name="b" transfer-ownership="none">
2134 <doc xml:space="preserve">another JSON object</doc>
2135 <type name="Object" c:type="gconstpointer"/>
2139 <method name="foreach_member"
2140 c:identifier="json_object_foreach_member"
2142 <doc xml:space="preserve">Iterates over all members of @object and calls @func on
2145 It is safe to change the value of a #JsonNode of the @object
2146 from within the iterator @func, but it is not safe to add or
2147 remove members from the @object.</doc>
2148 <return-value transfer-ownership="none">
2149 <type name="none" c:type="void"/>
2152 <instance-parameter name="object" transfer-ownership="none">
2153 <doc xml:space="preserve">a #JsonObject</doc>
2154 <type name="Object" c:type="JsonObject*"/>
2155 </instance-parameter>
2156 <parameter name="func"
2157 transfer-ownership="none"
2160 <doc xml:space="preserve">the function to be called on each member</doc>
2161 <type name="ObjectForeach" c:type="JsonObjectForeach"/>
2163 <parameter name="data"
2164 transfer-ownership="none"
2167 <doc xml:space="preserve">data to be passed to the function</doc>
2168 <type name="gpointer" c:type="gpointer"/>
2172 <method name="get_array_member"
2173 c:identifier="json_object_get_array_member"
2175 <doc xml:space="preserve">Convenience function that retrieves the array
2176 stored in @member_name of @object
2178 See also: json_object_get_member()</doc>
2179 <return-value transfer-ownership="none">
2180 <doc xml:space="preserve">the array inside the object's member</doc>
2181 <type name="Array" c:type="JsonArray*"/>
2184 <instance-parameter name="object" transfer-ownership="none">
2185 <doc xml:space="preserve">a #JsonObject</doc>
2186 <type name="Object" c:type="JsonObject*"/>
2187 </instance-parameter>
2188 <parameter name="member_name" transfer-ownership="none">
2189 <doc xml:space="preserve">the name of the member</doc>
2190 <type name="utf8" c:type="const gchar*"/>
2194 <method name="get_boolean_member"
2195 c:identifier="json_object_get_boolean_member"
2197 <doc xml:space="preserve">Convenience function that retrieves the boolean value
2198 stored in @member_name of @object
2200 See also: json_object_get_member()</doc>
2201 <return-value transfer-ownership="none">
2202 <doc xml:space="preserve">the boolean value of the object's member</doc>
2203 <type name="gboolean" c:type="gboolean"/>
2206 <instance-parameter name="object" transfer-ownership="none">
2207 <doc xml:space="preserve">a #JsonObject</doc>
2208 <type name="Object" c:type="JsonObject*"/>
2209 </instance-parameter>
2210 <parameter name="member_name" transfer-ownership="none">
2211 <doc xml:space="preserve">the name of the member</doc>
2212 <type name="utf8" c:type="const gchar*"/>
2216 <method name="get_double_member"
2217 c:identifier="json_object_get_double_member"
2219 <doc xml:space="preserve">Convenience function that retrieves the floating point value
2220 stored in @member_name of @object
2222 See also: json_object_get_member()</doc>
2223 <return-value transfer-ownership="none">
2224 <doc xml:space="preserve">the floating point value of the object's member</doc>
2225 <type name="gdouble" c:type="gdouble"/>
2228 <instance-parameter name="object" transfer-ownership="none">
2229 <doc xml:space="preserve">a #JsonObject</doc>
2230 <type name="Object" c:type="JsonObject*"/>
2231 </instance-parameter>
2232 <parameter name="member_name" transfer-ownership="none">
2233 <doc xml:space="preserve">the name of the member</doc>
2234 <type name="utf8" c:type="const gchar*"/>
2238 <method name="get_int_member"
2239 c:identifier="json_object_get_int_member"
2241 <doc xml:space="preserve">Convenience function that retrieves the integer value
2242 stored in @member_name of @object
2244 See also: json_object_get_member()</doc>
2245 <return-value transfer-ownership="none">
2246 <doc xml:space="preserve">the integer value of the object's member</doc>
2247 <type name="gint64" c:type="gint64"/>
2250 <instance-parameter name="object" transfer-ownership="none">
2251 <doc xml:space="preserve">a #JsonObject</doc>
2252 <type name="Object" c:type="JsonObject*"/>
2253 </instance-parameter>
2254 <parameter name="member_name" transfer-ownership="none">
2255 <doc xml:space="preserve">the name of the member</doc>
2256 <type name="utf8" c:type="const gchar*"/>
2260 <method name="get_member" c:identifier="json_object_get_member">
2261 <doc xml:space="preserve">Retrieves the #JsonNode containing the value of @member_name inside
2262 a #JsonObject.</doc>
2263 <return-value transfer-ownership="none">
2264 <doc xml:space="preserve">a pointer to the node for the requested object
2265 member, or %NULL</doc>
2266 <type name="Node" c:type="JsonNode*"/>
2269 <instance-parameter name="object" transfer-ownership="none">
2270 <doc xml:space="preserve">a #JsonObject</doc>
2271 <type name="Object" c:type="JsonObject*"/>
2272 </instance-parameter>
2273 <parameter name="member_name" transfer-ownership="none">
2274 <doc xml:space="preserve">the name of the JSON object member to access</doc>
2275 <type name="utf8" c:type="const gchar*"/>
2279 <method name="get_members" c:identifier="json_object_get_members">
2280 <doc xml:space="preserve">Retrieves all the names of the members of a #JsonObject. You can
2281 obtain the value for each member using json_object_get_member().</doc>
2282 <return-value transfer-ownership="container">
2283 <doc xml:space="preserve">a #GList
2284 of member names. The content of the list is owned by the #JsonObject
2285 and should never be modified or freed. When you have finished using
2286 the returned list, use g_list_free() to free the resources it has
2288 <type name="GLib.List" c:type="GList*">
2293 <instance-parameter name="object" transfer-ownership="none">
2294 <doc xml:space="preserve">a #JsonObject</doc>
2295 <type name="Object" c:type="JsonObject*"/>
2296 </instance-parameter>
2299 <method name="get_null_member"
2300 c:identifier="json_object_get_null_member"
2302 <doc xml:space="preserve">Convenience function that checks whether the value
2303 stored in @member_name of @object is null
2305 See also: json_object_get_member()</doc>
2306 <return-value transfer-ownership="none">
2307 <doc xml:space="preserve">%TRUE if the value is null</doc>
2308 <type name="gboolean" c:type="gboolean"/>
2311 <instance-parameter name="object" transfer-ownership="none">
2312 <doc xml:space="preserve">a #JsonObject</doc>
2313 <type name="Object" c:type="JsonObject*"/>
2314 </instance-parameter>
2315 <parameter name="member_name" transfer-ownership="none">
2316 <doc xml:space="preserve">the name of the member</doc>
2317 <type name="utf8" c:type="const gchar*"/>
2321 <method name="get_object_member"
2322 c:identifier="json_object_get_object_member"
2324 <doc xml:space="preserve">Convenience function that retrieves the object
2325 stored in @member_name of @object. It is an error to specify a @member_name
2326 which does not exist.
2328 See also: json_object_get_member()</doc>
2329 <return-value transfer-ownership="none" nullable="1">
2330 <doc xml:space="preserve">the object inside the object’s
2331 member, or %NULL if the value for the member is `null`</doc>
2332 <type name="Object" c:type="JsonObject*"/>
2335 <instance-parameter name="object" transfer-ownership="none">
2336 <doc xml:space="preserve">a #JsonObject</doc>
2337 <type name="Object" c:type="JsonObject*"/>
2338 </instance-parameter>
2339 <parameter name="member_name" transfer-ownership="none">
2340 <doc xml:space="preserve">the name of the member</doc>
2341 <type name="utf8" c:type="const gchar*"/>
2345 <method name="get_size" c:identifier="json_object_get_size">
2346 <doc xml:space="preserve">Retrieves the number of members of a #JsonObject.</doc>
2347 <return-value transfer-ownership="none">
2348 <doc xml:space="preserve">the number of members</doc>
2349 <type name="guint" c:type="guint"/>
2352 <instance-parameter name="object" transfer-ownership="none">
2353 <doc xml:space="preserve">a #JsonObject</doc>
2354 <type name="Object" c:type="JsonObject*"/>
2355 </instance-parameter>
2358 <method name="get_string_member"
2359 c:identifier="json_object_get_string_member"
2361 <doc xml:space="preserve">Convenience function that retrieves the string value
2362 stored in @member_name of @object
2364 See also: json_object_get_member()</doc>
2365 <return-value transfer-ownership="none">
2366 <doc xml:space="preserve">the string value of the object's member</doc>
2367 <type name="utf8" c:type="const gchar*"/>
2370 <instance-parameter name="object" transfer-ownership="none">
2371 <doc xml:space="preserve">a #JsonObject</doc>
2372 <type name="Object" c:type="JsonObject*"/>
2373 </instance-parameter>
2374 <parameter name="member_name" transfer-ownership="none">
2375 <doc xml:space="preserve">the name of the member</doc>
2376 <type name="utf8" c:type="const gchar*"/>
2380 <method name="get_values" c:identifier="json_object_get_values">
2381 <doc xml:space="preserve">Retrieves all the values of the members of a #JsonObject.</doc>
2382 <return-value transfer-ownership="container">
2383 <doc xml:space="preserve">a #GList of
2384 #JsonNodes. The content of the list is owned by the #JsonObject
2385 and should never be modified or freed. When you have finished using the
2386 returned list, use g_list_free() to free the resources it has allocated.</doc>
2387 <type name="GLib.List" c:type="GList*">
2392 <instance-parameter name="object" transfer-ownership="none">
2393 <doc xml:space="preserve">a #JsonObject</doc>
2394 <type name="Object" c:type="JsonObject*"/>
2395 </instance-parameter>
2398 <method name="has_member" c:identifier="json_object_has_member">
2399 <doc xml:space="preserve">Checks whether @object has a member named @member_name.</doc>
2400 <return-value transfer-ownership="none">
2401 <doc xml:space="preserve">%TRUE if the JSON object has the requested member</doc>
2402 <type name="gboolean" c:type="gboolean"/>
2405 <instance-parameter name="object" transfer-ownership="none">
2406 <doc xml:space="preserve">a #JsonObject</doc>
2407 <type name="Object" c:type="JsonObject*"/>
2408 </instance-parameter>
2409 <parameter name="member_name" transfer-ownership="none">
2410 <doc xml:space="preserve">the name of a JSON object member</doc>
2411 <type name="utf8" c:type="const gchar*"/>
2415 <method name="hash" c:identifier="json_object_hash" version="1.2">
2416 <doc xml:space="preserve">Calculate a hash value for the given @key (a #JsonObject).
2418 The hash is calculated over the object and all its members, recursively. If
2419 the object is immutable, this is a fast operation; otherwise, it scales
2420 proportionally with the number of members in the object.</doc>
2421 <return-value transfer-ownership="none">
2422 <doc xml:space="preserve">hash value for @key</doc>
2423 <type name="guint" c:type="guint"/>
2426 <instance-parameter name="key" transfer-ownership="none">
2427 <doc xml:space="preserve">a JSON object to hash</doc>
2428 <type name="Object" c:type="gconstpointer"/>
2429 </instance-parameter>
2432 <method name="is_immutable"
2433 c:identifier="json_object_is_immutable"
2435 <doc xml:space="preserve">Check whether the given @object has been marked as immutable by calling
2436 json_object_seal() on it.</doc>
2437 <return-value transfer-ownership="none">
2438 <doc xml:space="preserve">%TRUE if the @object is immutable</doc>
2439 <type name="gboolean" c:type="gboolean"/>
2442 <instance-parameter name="object" transfer-ownership="none">
2443 <doc xml:space="preserve">a #JsonObject</doc>
2444 <type name="Object" c:type="JsonObject*"/>
2445 </instance-parameter>
2448 <method name="ref" c:identifier="json_object_ref">
2449 <doc xml:space="preserve">Increase by one the reference count of a #JsonObject.</doc>
2450 <return-value transfer-ownership="none">
2451 <doc xml:space="preserve">the passed #JsonObject, with the reference count
2452 increased by one.</doc>
2453 <type name="Object" c:type="JsonObject*"/>
2456 <instance-parameter name="object" transfer-ownership="none">
2457 <doc xml:space="preserve">a #JsonObject</doc>
2458 <type name="Object" c:type="JsonObject*"/>
2459 </instance-parameter>
2462 <method name="remove_member" c:identifier="json_object_remove_member">
2463 <doc xml:space="preserve">Removes @member_name from @object, freeing its allocated resources.</doc>
2464 <return-value transfer-ownership="none">
2465 <type name="none" c:type="void"/>
2468 <instance-parameter name="object" transfer-ownership="none">
2469 <doc xml:space="preserve">a #JsonObject</doc>
2470 <type name="Object" c:type="JsonObject*"/>
2471 </instance-parameter>
2472 <parameter name="member_name" transfer-ownership="none">
2473 <doc xml:space="preserve">the name of the member to remove</doc>
2474 <type name="utf8" c:type="const gchar*"/>
2478 <method name="seal" c:identifier="json_object_seal" version="1.2">
2479 <doc xml:space="preserve">Seals the #JsonObject, making it immutable to further changes. This will
2480 recursively seal all members of the object too.
2482 If the @object is already immutable, this is a no-op.</doc>
2483 <return-value transfer-ownership="none">
2484 <type name="none" c:type="void"/>
2487 <instance-parameter name="object" transfer-ownership="none">
2488 <doc xml:space="preserve">a #JsonObject</doc>
2489 <type name="Object" c:type="JsonObject*"/>
2490 </instance-parameter>
2493 <method name="set_array_member"
2494 c:identifier="json_object_set_array_member"
2496 <doc xml:space="preserve">Convenience function for setting an array @value of
2497 @member_name inside @object.
2499 The @object will take ownership of the passed #JsonArray
2501 See also: json_object_set_member()</doc>
2502 <return-value transfer-ownership="none">
2503 <type name="none" c:type="void"/>
2506 <instance-parameter name="object" transfer-ownership="none">
2507 <doc xml:space="preserve">a #JsonObject</doc>
2508 <type name="Object" c:type="JsonObject*"/>
2509 </instance-parameter>
2510 <parameter name="member_name" transfer-ownership="none">
2511 <doc xml:space="preserve">the name of the member</doc>
2512 <type name="utf8" c:type="const gchar*"/>
2514 <parameter name="value" transfer-ownership="full">
2515 <doc xml:space="preserve">the value of the member</doc>
2516 <type name="Array" c:type="JsonArray*"/>
2520 <method name="set_boolean_member"
2521 c:identifier="json_object_set_boolean_member"
2523 <doc xml:space="preserve">Convenience function for setting a boolean @value of
2524 @member_name inside @object.
2526 See also: json_object_set_member()</doc>
2527 <return-value transfer-ownership="none">
2528 <type name="none" c:type="void"/>
2531 <instance-parameter name="object" transfer-ownership="none">
2532 <doc xml:space="preserve">a #JsonObject</doc>
2533 <type name="Object" c:type="JsonObject*"/>
2534 </instance-parameter>
2535 <parameter name="member_name" transfer-ownership="none">
2536 <doc xml:space="preserve">the name of the member</doc>
2537 <type name="utf8" c:type="const gchar*"/>
2539 <parameter name="value" transfer-ownership="none">
2540 <doc xml:space="preserve">the value of the member</doc>
2541 <type name="gboolean" c:type="gboolean"/>
2545 <method name="set_double_member"
2546 c:identifier="json_object_set_double_member"
2548 <doc xml:space="preserve">Convenience function for setting a floating point @value
2549 of @member_name inside @object.
2551 See also: json_object_set_member()</doc>
2552 <return-value transfer-ownership="none">
2553 <type name="none" c:type="void"/>
2556 <instance-parameter name="object" transfer-ownership="none">
2557 <doc xml:space="preserve">a #JsonObject</doc>
2558 <type name="Object" c:type="JsonObject*"/>
2559 </instance-parameter>
2560 <parameter name="member_name" transfer-ownership="none">
2561 <doc xml:space="preserve">the name of the member</doc>
2562 <type name="utf8" c:type="const gchar*"/>
2564 <parameter name="value" transfer-ownership="none">
2565 <doc xml:space="preserve">the value of the member</doc>
2566 <type name="gdouble" c:type="gdouble"/>
2570 <method name="set_int_member"
2571 c:identifier="json_object_set_int_member"
2573 <doc xml:space="preserve">Convenience function for setting an integer @value of
2574 @member_name inside @object.
2576 See also: json_object_set_member()</doc>
2577 <return-value transfer-ownership="none">
2578 <type name="none" c:type="void"/>
2581 <instance-parameter name="object" transfer-ownership="none">
2582 <doc xml:space="preserve">a #JsonObject</doc>
2583 <type name="Object" c:type="JsonObject*"/>
2584 </instance-parameter>
2585 <parameter name="member_name" transfer-ownership="none">
2586 <doc xml:space="preserve">the name of the member</doc>
2587 <type name="utf8" c:type="const gchar*"/>
2589 <parameter name="value" transfer-ownership="none">
2590 <doc xml:space="preserve">the value of the member</doc>
2591 <type name="gint64" c:type="gint64"/>
2595 <method name="set_member"
2596 c:identifier="json_object_set_member"
2598 <doc xml:space="preserve">Sets @node as the value of @member_name inside @object.
2600 If @object already contains a member called @member_name then
2601 the member's current value is overwritten. Otherwise, a new
2602 member is added to @object.</doc>
2603 <return-value transfer-ownership="none">
2604 <type name="none" c:type="void"/>
2607 <instance-parameter name="object" transfer-ownership="none">
2608 <doc xml:space="preserve">a #JsonObject</doc>
2609 <type name="Object" c:type="JsonObject*"/>
2610 </instance-parameter>
2611 <parameter name="member_name" transfer-ownership="none">
2612 <doc xml:space="preserve">the name of the member</doc>
2613 <type name="utf8" c:type="const gchar*"/>
2615 <parameter name="node" transfer-ownership="full">
2616 <doc xml:space="preserve">the value of the member</doc>
2617 <type name="Node" c:type="JsonNode*"/>
2621 <method name="set_null_member"
2622 c:identifier="json_object_set_null_member"
2624 <doc xml:space="preserve">Convenience function for setting a null @value of
2625 @member_name inside @object.
2627 See also: json_object_set_member()</doc>
2628 <return-value transfer-ownership="none">
2629 <type name="none" c:type="void"/>
2632 <instance-parameter name="object" transfer-ownership="none">
2633 <doc xml:space="preserve">a #JsonObject</doc>
2634 <type name="Object" c:type="JsonObject*"/>
2635 </instance-parameter>
2636 <parameter name="member_name" transfer-ownership="none">
2637 <doc xml:space="preserve">the name of the member</doc>
2638 <type name="utf8" c:type="const gchar*"/>
2642 <method name="set_object_member"
2643 c:identifier="json_object_set_object_member"
2645 <doc xml:space="preserve">Convenience function for setting an object @value of
2646 @member_name inside @object.
2648 The @object will take ownership of the passed #JsonObject
2650 See also: json_object_set_member()</doc>
2651 <return-value transfer-ownership="none">
2652 <type name="none" c:type="void"/>
2655 <instance-parameter name="object" transfer-ownership="none">
2656 <doc xml:space="preserve">a #JsonObject</doc>
2657 <type name="Object" c:type="JsonObject*"/>
2658 </instance-parameter>
2659 <parameter name="member_name" transfer-ownership="none">
2660 <doc xml:space="preserve">the name of the member</doc>
2661 <type name="utf8" c:type="const gchar*"/>
2663 <parameter name="value" transfer-ownership="full">
2664 <doc xml:space="preserve">the value of the member</doc>
2665 <type name="Object" c:type="JsonObject*"/>
2669 <method name="set_string_member"
2670 c:identifier="json_object_set_string_member"
2672 <doc xml:space="preserve">Convenience function for setting a string @value of
2673 @member_name inside @object.
2675 See also: json_object_set_member()</doc>
2676 <return-value transfer-ownership="none">
2677 <type name="none" c:type="void"/>
2680 <instance-parameter name="object" transfer-ownership="none">
2681 <doc xml:space="preserve">a #JsonObject</doc>
2682 <type name="Object" c:type="JsonObject*"/>
2683 </instance-parameter>
2684 <parameter name="member_name" transfer-ownership="none">
2685 <doc xml:space="preserve">the name of the member</doc>
2686 <type name="utf8" c:type="const gchar*"/>
2688 <parameter name="value" transfer-ownership="none">
2689 <doc xml:space="preserve">the value of the member</doc>
2690 <type name="utf8" c:type="const gchar*"/>
2694 <method name="unref" c:identifier="json_object_unref">
2695 <doc xml:space="preserve">Decreases by one the reference count of a #JsonObject. If the
2696 reference count reaches zero, the object is destroyed and all
2697 its allocated resources are freed.</doc>
2698 <return-value transfer-ownership="none">
2699 <type name="none" c:type="void"/>
2702 <instance-parameter name="object" transfer-ownership="none">
2703 <doc xml:space="preserve">a #JsonObject</doc>
2704 <type name="Object" c:type="JsonObject*"/>
2705 </instance-parameter>
2709 <callback name="ObjectForeach" c:type="JsonObjectForeach" version="0.8">
2710 <doc xml:space="preserve">The function to be passed to json_object_foreach_member(). You
2711 should not add or remove members to and from @object within
2712 this function. It is safe to change the value of @member_node.</doc>
2713 <return-value transfer-ownership="none">
2714 <type name="none" c:type="void"/>
2717 <parameter name="object" transfer-ownership="none">
2718 <doc xml:space="preserve">the iterated #JsonObject</doc>
2719 <type name="Object" c:type="JsonObject*"/>
2721 <parameter name="member_name" transfer-ownership="none">
2722 <doc xml:space="preserve">the name of the member</doc>
2723 <type name="utf8" c:type="const gchar*"/>
2725 <parameter name="member_node" transfer-ownership="none">
2726 <doc xml:space="preserve">a #JsonNode containing the @member_name value</doc>
2727 <type name="Node" c:type="JsonNode*"/>
2729 <parameter name="user_data"
2730 transfer-ownership="none"
2734 <doc xml:space="preserve">data passed to the function</doc>
2735 <type name="gpointer" c:type="gpointer"/>
2739 <record name="ObjectIter" c:type="JsonObjectIter" version="1.2">
2740 <doc xml:space="preserve">An iterator used to iterate over the members of a #JsonObject. This must
2741 be allocated on the stack and initialised using json_object_iter_init().
2742 The order in which members are returned by the iterator is undefined. The
2743 iterator is invalidated if its #JsonObject is modified during iteration.
2745 All the fields in the #JsonObjectIter structure are private and should
2746 never be accessed directly.</doc>
2747 <field name="priv_pointer" readable="0" private="1">
2748 <array zero-terminated="0" c:type="gpointer" fixed-size="6">
2749 <type name="gpointer" c:type="gpointer"/>
2752 <field name="priv_int" readable="0" private="1">
2753 <array zero-terminated="0" c:type="int" fixed-size="2">
2754 <type name="gint" c:type="int"/>
2757 <field name="priv_boolean" readable="0" private="1">
2758 <array zero-terminated="0" c:type="gboolean" fixed-size="1">
2759 <type name="gboolean" c:type="gboolean"/>
2762 <method name="init" c:identifier="json_object_iter_init" version="1.2">
2763 <doc xml:space="preserve">Initialise the @iter and associate it with @object.
2765 |[<!-- language="C" -->
2766 JsonObjectIter iter;
2767 const gchar *member_name;
2768 JsonNode *member_node;
2770 json_object_iter_init (&iter, some_object);
2771 while (json_object_iter_next (&iter, &member_name, &member_node))
2773 // Do something with @member_name and @member_node.
2776 <return-value transfer-ownership="none">
2777 <type name="none" c:type="void"/>
2780 <instance-parameter name="iter" transfer-ownership="none">
2781 <doc xml:space="preserve">an uninitialised #JsonObjectIter</doc>
2782 <type name="ObjectIter" c:type="JsonObjectIter*"/>
2783 </instance-parameter>
2784 <parameter name="object" transfer-ownership="none">
2785 <doc xml:space="preserve">the #JsonObject to iterate over</doc>
2786 <type name="Object" c:type="JsonObject*"/>
2790 <method name="next" c:identifier="json_object_iter_next" version="1.2">
2791 <doc xml:space="preserve">Advance @iter and retrieve the next member in the object. If the end of the
2792 object is reached, %FALSE is returned and @member_name and @member_node are
2793 set to invalid values. After that point, the @iter is invalid.
2795 The order in which members are returned by the iterator is undefined. The
2796 iterator is invalidated if its #JsonObject is modified during iteration.</doc>
2797 <return-value transfer-ownership="none">
2798 <doc xml:space="preserve">%TRUE if @member_name and @member_node are valid; %FALSE if the end
2799 of the object has been reached</doc>
2800 <type name="gboolean" c:type="gboolean"/>
2803 <instance-parameter name="iter" transfer-ownership="none">
2804 <doc xml:space="preserve">a #JsonObjectIter</doc>
2805 <type name="ObjectIter" c:type="JsonObjectIter*"/>
2806 </instance-parameter>
2807 <parameter name="member_name"
2809 caller-allocates="0"
2810 transfer-ownership="none"
2813 <doc xml:space="preserve">return
2814 location for the member name, or %NULL to ignore</doc>
2815 <type name="utf8" c:type="const gchar**"/>
2817 <parameter name="member_node"
2819 caller-allocates="0"
2820 transfer-ownership="none"
2823 <doc xml:space="preserve">return
2824 location for the member value, or %NULL to ignore</doc>
2825 <type name="Node" c:type="JsonNode**"/>
2830 <class name="Parser"
2831 c:symbol-prefix="parser"
2833 parent="GObject.Object"
2834 glib:type-name="JsonParser"
2835 glib:get-type="json_parser_get_type"
2836 glib:type-struct="ParserClass">
2837 <doc xml:space="preserve">JSON data streams parser. The contents of the #JsonParser structure are
2838 private and should only be accessed via the provided API.</doc>
2839 <constructor name="new" c:identifier="json_parser_new">
2840 <doc xml:space="preserve">Creates a new #JsonParser instance. You can use the #JsonParser to
2841 load a JSON stream from either a file or a buffer and then walk the
2842 hierarchy using the data types API.</doc>
2843 <return-value transfer-ownership="full">
2844 <doc xml:space="preserve">the newly created #JsonParser. Use g_object_unref()
2845 to release all the memory it allocates.</doc>
2846 <type name="Parser" c:type="JsonParser*"/>
2849 <constructor name="new_immutable"
2850 c:identifier="json_parser_new_immutable"
2852 <doc xml:space="preserve">Creates a new #JsonParser instance with its #JsonParser:immutable property
2853 set to %TRUE to create immutable output trees.</doc>
2854 <return-value transfer-ownership="full">
2855 <doc xml:space="preserve">a new #JsonParser</doc>
2856 <type name="Parser" c:type="JsonParser*"/>
2859 <virtual-method name="array_element">
2860 <return-value transfer-ownership="none">
2861 <type name="none" c:type="void"/>
2864 <instance-parameter name="parser" transfer-ownership="none">
2865 <type name="Parser" c:type="JsonParser*"/>
2866 </instance-parameter>
2867 <parameter name="array" transfer-ownership="none">
2868 <type name="Array" c:type="JsonArray*"/>
2870 <parameter name="index_" transfer-ownership="none">
2871 <type name="gint" c:type="gint"/>
2875 <virtual-method name="array_end">
2876 <return-value transfer-ownership="none">
2877 <type name="none" c:type="void"/>
2880 <instance-parameter name="parser" transfer-ownership="none">
2881 <type name="Parser" c:type="JsonParser*"/>
2882 </instance-parameter>
2883 <parameter name="array" transfer-ownership="none">
2884 <type name="Array" c:type="JsonArray*"/>
2888 <virtual-method name="array_start">
2889 <return-value transfer-ownership="none">
2890 <type name="none" c:type="void"/>
2893 <instance-parameter name="parser" transfer-ownership="none">
2894 <type name="Parser" c:type="JsonParser*"/>
2895 </instance-parameter>
2898 <virtual-method name="error">
2899 <return-value transfer-ownership="none">
2900 <type name="none" c:type="void"/>
2903 <instance-parameter name="parser" transfer-ownership="none">
2904 <type name="Parser" c:type="JsonParser*"/>
2905 </instance-parameter>
2906 <parameter name="error" transfer-ownership="none">
2907 <type name="GLib.Error" c:type="const GError*"/>
2911 <virtual-method name="object_end">
2912 <return-value transfer-ownership="none">
2913 <type name="none" c:type="void"/>
2916 <instance-parameter name="parser" transfer-ownership="none">
2917 <type name="Parser" c:type="JsonParser*"/>
2918 </instance-parameter>
2919 <parameter name="object" transfer-ownership="none">
2920 <type name="Object" c:type="JsonObject*"/>
2924 <virtual-method name="object_member">
2925 <return-value transfer-ownership="none">
2926 <type name="none" c:type="void"/>
2929 <instance-parameter name="parser" transfer-ownership="none">
2930 <type name="Parser" c:type="JsonParser*"/>
2931 </instance-parameter>
2932 <parameter name="object" transfer-ownership="none">
2933 <type name="Object" c:type="JsonObject*"/>
2935 <parameter name="member_name" transfer-ownership="none">
2936 <type name="utf8" c:type="const gchar*"/>
2940 <virtual-method name="object_start">
2941 <return-value transfer-ownership="none">
2942 <type name="none" c:type="void"/>
2945 <instance-parameter name="parser" transfer-ownership="none">
2946 <type name="Parser" c:type="JsonParser*"/>
2947 </instance-parameter>
2950 <virtual-method name="parse_end">
2951 <return-value transfer-ownership="none">
2952 <type name="none" c:type="void"/>
2955 <instance-parameter name="parser" transfer-ownership="none">
2956 <type name="Parser" c:type="JsonParser*"/>
2957 </instance-parameter>
2960 <virtual-method name="parse_start">
2961 <return-value transfer-ownership="none">
2962 <type name="none" c:type="void"/>
2965 <instance-parameter name="parser" transfer-ownership="none">
2966 <type name="Parser" c:type="JsonParser*"/>
2967 </instance-parameter>
2970 <method name="get_current_line"
2971 c:identifier="json_parser_get_current_line">
2972 <doc xml:space="preserve">Retrieves the line currently parsed, starting from 1.
2974 This function has defined behaviour only while parsing; calling this
2975 function from outside the signal handlers emitted by #JsonParser will
2977 <return-value transfer-ownership="none">
2978 <doc xml:space="preserve">the currently parsed line, or 0.</doc>
2979 <type name="guint" c:type="guint"/>
2982 <instance-parameter name="parser" transfer-ownership="none">
2983 <doc xml:space="preserve">a #JsonParser</doc>
2984 <type name="Parser" c:type="JsonParser*"/>
2985 </instance-parameter>
2988 <method name="get_current_pos"
2989 c:identifier="json_parser_get_current_pos">
2990 <doc xml:space="preserve">Retrieves the current position inside the current line, starting
2993 This function has defined behaviour only while parsing; calling this
2994 function from outside the signal handlers emitted by #JsonParser will
2996 <return-value transfer-ownership="none">
2997 <doc xml:space="preserve">the position in the current line, or 0.</doc>
2998 <type name="guint" c:type="guint"/>
3001 <instance-parameter name="parser" transfer-ownership="none">
3002 <doc xml:space="preserve">a #JsonParser</doc>
3003 <type name="Parser" c:type="JsonParser*"/>
3004 </instance-parameter>
3007 <method name="get_root" c:identifier="json_parser_get_root">
3008 <doc xml:space="preserve">Retrieves the top level node from the parsed JSON stream.</doc>
3009 <return-value transfer-ownership="none">
3010 <doc xml:space="preserve">the root #JsonNode . The returned
3011 node is owned by the #JsonParser and should never be modified
3013 <type name="Node" c:type="JsonNode*"/>
3016 <instance-parameter name="parser" transfer-ownership="none">
3017 <doc xml:space="preserve">a #JsonParser</doc>
3018 <type name="Parser" c:type="JsonParser*"/>
3019 </instance-parameter>
3022 <method name="has_assignment"
3023 c:identifier="json_parser_has_assignment"
3025 <doc xml:space="preserve">A JSON data stream might sometimes contain an assignment, like:
3028 var _json_data = { "member_name" : [ ...
3031 even though it would technically constitute a violation of the RFC.
3033 #JsonParser will ignore the left hand identifier and parse the right
3034 hand value of the assignment. #JsonParser will record, though, the
3035 existence of the assignment in the data stream and the variable name
3037 <return-value transfer-ownership="none">
3038 <doc xml:space="preserve">%TRUE if there was an assignment, %FALSE otherwise. If
3039 @variable_name is not %NULL it will be set to the name of the variable
3040 used in the assignment. The string is owned by #JsonParser and should
3041 never be modified or freed.</doc>
3042 <type name="gboolean" c:type="gboolean"/>
3045 <instance-parameter name="parser" transfer-ownership="none">
3046 <doc xml:space="preserve">a #JsonParser</doc>
3047 <type name="Parser" c:type="JsonParser*"/>
3048 </instance-parameter>
3049 <parameter name="variable_name"
3051 caller-allocates="0"
3052 transfer-ownership="none"
3055 <doc xml:space="preserve">Return location for the variable
3056 name, or %NULL</doc>
3057 <type name="utf8" c:type="gchar**"/>
3061 <method name="load_from_data"
3062 c:identifier="json_parser_load_from_data"
3064 <doc xml:space="preserve">Loads a JSON stream from a buffer and parses it. You can call this function
3065 multiple times with the same #JsonParser object, but the contents of the
3066 parser will be destroyed each time.</doc>
3067 <return-value transfer-ownership="none">
3068 <doc xml:space="preserve">%TRUE if the buffer was succesfully parser. In case
3069 of error, @error is set accordingly and %FALSE is returned</doc>
3070 <type name="gboolean" c:type="gboolean"/>
3073 <instance-parameter name="parser" transfer-ownership="none">
3074 <doc xml:space="preserve">a #JsonParser</doc>
3075 <type name="Parser" c:type="JsonParser*"/>
3076 </instance-parameter>
3077 <parameter name="data" transfer-ownership="none">
3078 <doc xml:space="preserve">the buffer to parse</doc>
3079 <type name="utf8" c:type="const gchar*"/>
3081 <parameter name="length" transfer-ownership="none">
3082 <doc xml:space="preserve">the length of the buffer, or -1</doc>
3083 <type name="gssize" c:type="gssize"/>
3087 <method name="load_from_file"
3088 c:identifier="json_parser_load_from_file"
3090 <doc xml:space="preserve">Loads a JSON stream from the content of @filename and parses it. See
3091 json_parser_load_from_data().</doc>
3092 <return-value transfer-ownership="none">
3093 <doc xml:space="preserve">%TRUE if the file was successfully loaded and parsed.
3094 In case of error, @error is set accordingly and %FALSE is returned</doc>
3095 <type name="gboolean" c:type="gboolean"/>
3098 <instance-parameter name="parser" transfer-ownership="none">
3099 <doc xml:space="preserve">a #JsonParser</doc>
3100 <type name="Parser" c:type="JsonParser*"/>
3101 </instance-parameter>
3102 <parameter name="filename" transfer-ownership="none">
3103 <doc xml:space="preserve">the path for the file to parse</doc>
3104 <type name="utf8" c:type="const gchar*"/>
3108 <method name="load_from_stream"
3109 c:identifier="json_parser_load_from_stream"
3112 <doc xml:space="preserve">Loads the contents of an input stream and parses them.
3114 If @cancellable is not %NULL, then the operation can be cancelled by
3115 triggering the @cancellable object from another thread. If the
3116 operation was cancelled, the error %G_IO_ERROR_CANCELLED will be set
3117 on the passed @error.</doc>
3118 <return-value transfer-ownership="none">
3119 <doc xml:space="preserve">%TRUE if the data stream was successfully read and
3120 parsed, and %FALSE otherwise</doc>
3121 <type name="gboolean" c:type="gboolean"/>
3124 <instance-parameter name="parser" transfer-ownership="none">
3125 <doc xml:space="preserve">a #JsonParser</doc>
3126 <type name="Parser" c:type="JsonParser*"/>
3127 </instance-parameter>
3128 <parameter name="stream" transfer-ownership="none">
3129 <doc xml:space="preserve">an open #GInputStream</doc>
3130 <type name="Gio.InputStream" c:type="GInputStream*"/>
3132 <parameter name="cancellable"
3133 transfer-ownership="none"
3136 <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
3137 <type name="Gio.Cancellable" c:type="GCancellable*"/>
3141 <method name="load_from_stream_async"
3142 c:identifier="json_parser_load_from_stream_async"
3144 <doc xml:space="preserve">Asynchronously reads the contents of @stream.
3146 For more details, see json_parser_load_from_stream() which is the
3147 synchronous version of this call.
3149 When the operation is finished, @callback will be called. You should
3150 then call json_parser_load_from_stream_finish() to get the result
3151 of the operation.</doc>
3152 <return-value transfer-ownership="none">
3153 <type name="none" c:type="void"/>
3156 <instance-parameter name="parser" transfer-ownership="none">
3157 <doc xml:space="preserve">a #JsonParser</doc>
3158 <type name="Parser" c:type="JsonParser*"/>
3159 </instance-parameter>
3160 <parameter name="stream" transfer-ownership="none">
3161 <doc xml:space="preserve">a #GInputStream</doc>
3162 <type name="Gio.InputStream" c:type="GInputStream*"/>
3164 <parameter name="cancellable"
3165 transfer-ownership="none"
3168 <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
3169 <type name="Gio.Cancellable" c:type="GCancellable*"/>
3171 <parameter name="callback"
3172 transfer-ownership="none"
3177 <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
3178 <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
3180 <parameter name="user_data"
3181 transfer-ownership="none"
3184 <doc xml:space="preserve">the data to pass to @callback</doc>
3185 <type name="gpointer" c:type="gpointer"/>
3189 <method name="load_from_stream_finish"
3190 c:identifier="json_parser_load_from_stream_finish"
3193 <doc xml:space="preserve">Finishes an asynchronous stream loading started with
3194 json_parser_load_from_stream_async().</doc>
3195 <return-value transfer-ownership="none">
3196 <doc xml:space="preserve">%TRUE if the content of the stream was successfully retrieves
3197 and parsed, and %FALSE otherwise. In case of error, the #GError will be
3198 filled accordingly.</doc>
3199 <type name="gboolean" c:type="gboolean"/>
3202 <instance-parameter name="parser" transfer-ownership="none">
3203 <doc xml:space="preserve">a #JsonParser</doc>
3204 <type name="Parser" c:type="JsonParser*"/>
3205 </instance-parameter>
3206 <parameter name="result" transfer-ownership="none">
3207 <doc xml:space="preserve">a #GAsyncResult</doc>
3208 <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
3212 <property name="immutable"
3216 transfer-ownership="none">
3217 <doc xml:space="preserve">Whether the #JsonNode tree built by the #JsonParser should be immutable
3218 when created. Making the output immutable on creation avoids the expense
3219 of traversing it to make it immutable later.</doc>
3220 <type name="gboolean" c:type="gboolean"/>
3222 <field name="parent_instance" readable="0" private="1">
3223 <type name="GObject.Object" c:type="GObject"/>
3225 <field name="priv" readable="0" private="1">
3226 <type name="ParserPrivate" c:type="JsonParserPrivate*"/>
3228 <glib:signal name="array-element" when="last">
3229 <doc xml:space="preserve">The ::array-element signal is emitted each time the #JsonParser
3230 has successfully parsed a single element of a #JsonArray. The
3231 array and element index are passed to the signal handlers.</doc>
3232 <return-value transfer-ownership="none">
3233 <type name="none" c:type="void"/>
3236 <parameter name="array" transfer-ownership="none">
3237 <doc xml:space="preserve">a #JsonArray</doc>
3238 <type name="Array"/>
3240 <parameter name="index_" transfer-ownership="none">
3241 <doc xml:space="preserve">the index of the newly parsed element</doc>
3242 <type name="gint" c:type="gint"/>
3246 <glib:signal name="array-end" when="last">
3247 <doc xml:space="preserve">The ::array-end signal is emitted each time the #JsonParser
3248 has successfully parsed an entire #JsonArray</doc>
3249 <return-value transfer-ownership="none">
3250 <type name="none" c:type="void"/>
3253 <parameter name="array" transfer-ownership="none">
3254 <doc xml:space="preserve">the parsed #JsonArray</doc>
3255 <type name="Array"/>
3259 <glib:signal name="array-start" when="last">
3260 <doc xml:space="preserve">The ::array-start signal is emitted each time the #JsonParser
3261 starts parsing a #JsonArray</doc>
3262 <return-value transfer-ownership="none">
3263 <type name="none" c:type="void"/>
3266 <glib:signal name="error" when="last">
3267 <doc xml:space="preserve">The ::error signal is emitted each time a #JsonParser encounters
3268 an error in a JSON stream.</doc>
3269 <return-value transfer-ownership="none">
3270 <type name="none" c:type="void"/>
3273 <parameter name="error"
3274 transfer-ownership="none"
3277 <doc xml:space="preserve">a pointer to the #GError</doc>
3278 <type name="gpointer" c:type="gpointer"/>
3282 <glib:signal name="object-end" when="last">
3283 <doc xml:space="preserve">The ::object-end signal is emitted each time the #JsonParser
3284 has successfully parsed an entire #JsonObject.</doc>
3285 <return-value transfer-ownership="none">
3286 <type name="none" c:type="void"/>
3289 <parameter name="object" transfer-ownership="none">
3290 <doc xml:space="preserve">the parsed #JsonObject</doc>
3291 <type name="Object"/>
3295 <glib:signal name="object-member" when="last">
3296 <doc xml:space="preserve">The ::object-member signal is emitted each time the #JsonParser
3297 has successfully parsed a single member of a #JsonObject. The
3298 object and member are passed to the signal handlers.</doc>
3299 <return-value transfer-ownership="none">
3300 <type name="none" c:type="void"/>
3303 <parameter name="object" transfer-ownership="none">
3304 <doc xml:space="preserve">a #JsonObject</doc>
3305 <type name="Object"/>
3307 <parameter name="member_name" transfer-ownership="none">
3308 <doc xml:space="preserve">the name of the newly parsed member</doc>
3309 <type name="utf8" c:type="gchar*"/>
3313 <glib:signal name="object-start" when="last">
3314 <doc xml:space="preserve">The ::object-start signal is emitted each time the #JsonParser
3315 starts parsing a #JsonObject.</doc>
3316 <return-value transfer-ownership="none">
3317 <type name="none" c:type="void"/>
3320 <glib:signal name="parse-end" when="last">
3321 <doc xml:space="preserve">The ::parse-end signal is emitted when the parser successfully
3322 finished parsing a JSON data stream</doc>
3323 <return-value transfer-ownership="none">
3324 <type name="none" c:type="void"/>
3327 <glib:signal name="parse-start" when="last">
3328 <doc xml:space="preserve">The ::parse-start signal is emitted when the parser began parsing
3329 a JSON data stream.</doc>
3330 <return-value transfer-ownership="none">
3331 <type name="none" c:type="void"/>
3335 <record name="ParserClass"
3336 c:type="JsonParserClass"
3337 glib:is-gtype-struct-for="Parser">
3338 <doc xml:space="preserve">#JsonParser class.</doc>
3339 <field name="parent_class" readable="0" private="1">
3340 <type name="GObject.ObjectClass" c:type="GObjectClass"/>
3342 <field name="parse_start">
3343 <callback name="parse_start">
3344 <return-value transfer-ownership="none">
3345 <type name="none" c:type="void"/>
3348 <parameter name="parser" transfer-ownership="none">
3349 <type name="Parser" c:type="JsonParser*"/>
3354 <field name="object_start">
3355 <callback name="object_start">
3356 <return-value transfer-ownership="none">
3357 <type name="none" c:type="void"/>
3360 <parameter name="parser" transfer-ownership="none">
3361 <type name="Parser" c:type="JsonParser*"/>
3366 <field name="object_member">
3367 <callback name="object_member">
3368 <return-value transfer-ownership="none">
3369 <type name="none" c:type="void"/>
3372 <parameter name="parser" transfer-ownership="none">
3373 <type name="Parser" c:type="JsonParser*"/>
3375 <parameter name="object" transfer-ownership="none">
3376 <type name="Object" c:type="JsonObject*"/>
3378 <parameter name="member_name" transfer-ownership="none">
3379 <type name="utf8" c:type="const gchar*"/>
3384 <field name="object_end">
3385 <callback name="object_end">
3386 <return-value transfer-ownership="none">
3387 <type name="none" c:type="void"/>
3390 <parameter name="parser" transfer-ownership="none">
3391 <type name="Parser" c:type="JsonParser*"/>
3393 <parameter name="object" transfer-ownership="none">
3394 <type name="Object" c:type="JsonObject*"/>
3399 <field name="array_start">
3400 <callback name="array_start">
3401 <return-value transfer-ownership="none">
3402 <type name="none" c:type="void"/>
3405 <parameter name="parser" transfer-ownership="none">
3406 <type name="Parser" c:type="JsonParser*"/>
3411 <field name="array_element">
3412 <callback name="array_element">
3413 <return-value transfer-ownership="none">
3414 <type name="none" c:type="void"/>
3417 <parameter name="parser" transfer-ownership="none">
3418 <type name="Parser" c:type="JsonParser*"/>
3420 <parameter name="array" transfer-ownership="none">
3421 <type name="Array" c:type="JsonArray*"/>
3423 <parameter name="index_" transfer-ownership="none">
3424 <type name="gint" c:type="gint"/>
3429 <field name="array_end">
3430 <callback name="array_end">
3431 <return-value transfer-ownership="none">
3432 <type name="none" c:type="void"/>
3435 <parameter name="parser" transfer-ownership="none">
3436 <type name="Parser" c:type="JsonParser*"/>
3438 <parameter name="array" transfer-ownership="none">
3439 <type name="Array" c:type="JsonArray*"/>
3444 <field name="parse_end">
3445 <callback name="parse_end">
3446 <return-value transfer-ownership="none">
3447 <type name="none" c:type="void"/>
3450 <parameter name="parser" transfer-ownership="none">
3451 <type name="Parser" c:type="JsonParser*"/>
3456 <field name="error">
3457 <callback name="error">
3458 <return-value transfer-ownership="none">
3459 <type name="none" c:type="void"/>
3462 <parameter name="parser" transfer-ownership="none">
3463 <type name="Parser" c:type="JsonParser*"/>
3465 <parameter name="error" transfer-ownership="none">
3466 <type name="GLib.Error" c:type="const GError*"/>
3471 <field name="_json_reserved1" introspectable="0">
3472 <callback name="_json_reserved1">
3473 <return-value transfer-ownership="none">
3474 <type name="none" c:type="void"/>
3478 <field name="_json_reserved2" introspectable="0">
3479 <callback name="_json_reserved2">
3480 <return-value transfer-ownership="none">
3481 <type name="none" c:type="void"/>
3485 <field name="_json_reserved3" introspectable="0">
3486 <callback name="_json_reserved3">
3487 <return-value transfer-ownership="none">
3488 <type name="none" c:type="void"/>
3492 <field name="_json_reserved4" introspectable="0">
3493 <callback name="_json_reserved4">
3494 <return-value transfer-ownership="none">
3495 <type name="none" c:type="void"/>
3499 <field name="_json_reserved5" introspectable="0">
3500 <callback name="_json_reserved5">
3501 <return-value transfer-ownership="none">
3502 <type name="none" c:type="void"/>
3506 <field name="_json_reserved6" introspectable="0">
3507 <callback name="_json_reserved6">
3508 <return-value transfer-ownership="none">
3509 <type name="none" c:type="void"/>
3513 <field name="_json_reserved7" introspectable="0">
3514 <callback name="_json_reserved7">
3515 <return-value transfer-ownership="none">
3516 <type name="none" c:type="void"/>
3520 <field name="_json_reserved8" introspectable="0">
3521 <callback name="_json_reserved8">
3522 <return-value transfer-ownership="none">
3523 <type name="none" c:type="void"/>
3528 <enumeration name="ParserError"
3529 glib:type-name="JsonParserError"
3530 glib:get-type="json_parser_error_get_type"
3531 c:type="JsonParserError"
3532 glib:error-domain="json-parser-error-quark">
3533 <doc xml:space="preserve">Error enumeration for #JsonParser
3535 This enumeration can be extended at later date</doc>
3536 <member name="parse"
3538 c:identifier="JSON_PARSER_ERROR_PARSE"
3540 <doc xml:space="preserve">parse error</doc>
3542 <member name="trailing_comma"
3544 c:identifier="JSON_PARSER_ERROR_TRAILING_COMMA"
3545 glib:nick="trailing-comma">
3546 <doc xml:space="preserve">unexpected trailing comma</doc>
3548 <member name="missing_comma"
3550 c:identifier="JSON_PARSER_ERROR_MISSING_COMMA"
3551 glib:nick="missing-comma">
3552 <doc xml:space="preserve">expected comma</doc>
3554 <member name="missing_colon"
3556 c:identifier="JSON_PARSER_ERROR_MISSING_COLON"
3557 glib:nick="missing-colon">
3558 <doc xml:space="preserve">expected colon</doc>
3560 <member name="invalid_bareword"
3562 c:identifier="JSON_PARSER_ERROR_INVALID_BAREWORD"
3563 glib:nick="invalid-bareword">
3564 <doc xml:space="preserve">invalid bareword</doc>
3566 <member name="empty_member_name"
3568 c:identifier="JSON_PARSER_ERROR_EMPTY_MEMBER_NAME"
3569 glib:nick="empty-member-name">
3570 <doc xml:space="preserve">empty member name (Since: 0.16)</doc>
3572 <member name="invalid_data"
3574 c:identifier="JSON_PARSER_ERROR_INVALID_DATA"
3575 glib:nick="invalid-data">
3576 <doc xml:space="preserve">invalid data (Since: 0.18)</doc>
3578 <member name="unknown"
3580 c:identifier="JSON_PARSER_ERROR_UNKNOWN"
3581 glib:nick="unknown">
3582 <doc xml:space="preserve">unknown error</doc>
3584 <function name="quark" c:identifier="json_parser_error_quark">
3585 <return-value transfer-ownership="none">
3586 <type name="GLib.Quark" c:type="GQuark"/>
3590 <record name="ParserPrivate" c:type="JsonParserPrivate" disguised="1">
3593 c:symbol-prefix="path"
3596 parent="GObject.Object"
3597 glib:type-name="JsonPath"
3598 glib:get-type="json_path_get_type"
3599 glib:type-struct="PathClass">
3600 <doc xml:space="preserve">The `JsonPath` structure is an opaque object whose members cannot be
3601 directly accessed except through the provided API.</doc>
3602 <constructor name="new" c:identifier="json_path_new" version="0.14">
3603 <doc xml:space="preserve">Creates a new #JsonPath instance.
3605 Once created, the #JsonPath object should be used with json_path_compile()
3606 and json_path_match().</doc>
3607 <return-value transfer-ownership="full">
3608 <doc xml:space="preserve">the newly created #JsonPath instance. Use
3609 g_object_unref() to free the allocated resources when done</doc>
3610 <type name="Path" c:type="JsonPath*"/>
3613 <function name="query"
3614 c:identifier="json_path_query"
3617 <doc xml:space="preserve">Queries a JSON tree using a JSONPath expression.
3619 This function is a simple wrapper around json_path_new(),
3620 json_path_compile() and json_path_match(). It implicitly
3621 creates a #JsonPath instance, compiles @expression and
3622 matches it against the JSON tree pointed by @root.</doc>
3623 <return-value transfer-ownership="full">
3624 <doc xml:space="preserve">a newly-created #JsonNode of type
3625 %JSON_NODE_ARRAY containing an array of matching #JsonNodes.
3626 Use json_node_unref() when done</doc>
3627 <type name="Node" c:type="JsonNode*"/>
3630 <parameter name="expression" transfer-ownership="none">
3631 <doc xml:space="preserve">a JSONPath expression</doc>
3632 <type name="utf8" c:type="const char*"/>
3634 <parameter name="root" transfer-ownership="none">
3635 <doc xml:space="preserve">the root of a JSON tree</doc>
3636 <type name="Node" c:type="JsonNode*"/>
3640 <method name="compile"
3641 c:identifier="json_path_compile"
3644 <doc xml:space="preserve">Validates and decomposes @expression.
3646 A JSONPath expression must be compiled before calling json_path_match().</doc>
3647 <return-value transfer-ownership="none">
3648 <doc xml:space="preserve">%TRUE on success; on error, @error will be set with
3649 the %JSON_PATH_ERROR domain and a code from the #JsonPathError
3650 enumeration, and %FALSE will be returned</doc>
3651 <type name="gboolean" c:type="gboolean"/>
3654 <instance-parameter name="path" transfer-ownership="none">
3655 <doc xml:space="preserve">a #JsonPath</doc>
3656 <type name="Path" c:type="JsonPath*"/>
3657 </instance-parameter>
3658 <parameter name="expression" transfer-ownership="none">
3659 <doc xml:space="preserve">a JSONPath expression</doc>
3660 <type name="utf8" c:type="const char*"/>
3664 <method name="match" c:identifier="json_path_match" version="0.14">
3665 <doc xml:space="preserve">Matches the JSON tree pointed by @root using the expression compiled
3668 The matching #JsonNodes will be copied into a #JsonArray and
3669 returned wrapped in a #JsonNode.</doc>
3670 <return-value transfer-ownership="full">
3671 <doc xml:space="preserve">a newly-created #JsonNode of type
3672 %JSON_NODE_ARRAY containing an array of matching #JsonNodes.
3673 Use json_node_unref() when done</doc>
3674 <type name="Node" c:type="JsonNode*"/>
3677 <instance-parameter name="path" transfer-ownership="none">
3678 <doc xml:space="preserve">a compiled #JsonPath</doc>
3679 <type name="Path" c:type="JsonPath*"/>
3680 </instance-parameter>
3681 <parameter name="root" transfer-ownership="none">
3682 <doc xml:space="preserve">a #JsonNode</doc>
3683 <type name="Node" c:type="JsonNode*"/>
3688 <record name="PathClass"
3689 c:type="JsonPathClass"
3691 glib:is-gtype-struct-for="Path"
3693 <doc xml:space="preserve">The `JsonPathClass` structure is an opaque object class whose members
3694 cannot be directly accessed.</doc>
3696 <enumeration name="PathError"
3698 glib:type-name="JsonPathError"
3699 glib:get-type="json_path_error_get_type"
3700 c:type="JsonPathError"
3701 glib:error-domain="json-path-error-quark">
3702 <doc xml:space="preserve">Error code enumeration for the %JSON_PATH_ERROR domain.</doc>
3703 <member name="query"
3705 c:identifier="JSON_PATH_ERROR_INVALID_QUERY"
3707 <doc xml:space="preserve">Invalid query</doc>
3709 <function name="quark" c:identifier="json_path_error_quark">
3710 <return-value transfer-ownership="none">
3711 <type name="GLib.Quark" c:type="GQuark"/>
3715 <class name="Reader"
3716 c:symbol-prefix="reader"
3719 parent="GObject.Object"
3720 glib:type-name="JsonReader"
3721 glib:get-type="json_reader_get_type"
3722 glib:type-struct="ReaderClass">
3723 <doc xml:space="preserve">The `JsonReader` structure contains only private data and should
3724 be accessed using the provided API</doc>
3725 <constructor name="new" c:identifier="json_reader_new" version="0.12">
3726 <doc xml:space="preserve">Creates a new #JsonReader. You can use this object to read the contents of
3727 the JSON tree starting from @node</doc>
3728 <return-value transfer-ownership="full">
3729 <doc xml:space="preserve">the newly created #JsonReader. Use g_object_unref() to
3730 release the allocated resources when done</doc>
3731 <type name="Reader" c:type="JsonReader*"/>
3734 <parameter name="node"
3735 transfer-ownership="none"
3738 <doc xml:space="preserve">a #JsonNode, or %NULL</doc>
3739 <type name="Node" c:type="JsonNode*"/>
3743 <method name="count_elements"
3744 c:identifier="json_reader_count_elements"
3746 <doc xml:space="preserve">Counts the elements of the current position, if @reader is
3747 positioned on an array</doc>
3748 <return-value transfer-ownership="none">
3749 <doc xml:space="preserve">the number of elements, or -1. In case of failure
3750 the #JsonReader is set in an error state</doc>
3751 <type name="gint" c:type="gint"/>
3754 <instance-parameter name="reader" transfer-ownership="none">
3755 <doc xml:space="preserve">a #JsonReader</doc>
3756 <type name="Reader" c:type="JsonReader*"/>
3757 </instance-parameter>
3760 <method name="count_members"
3761 c:identifier="json_reader_count_members"
3763 <doc xml:space="preserve">Counts the members of the current position, if @reader is
3764 positioned on an object</doc>
3765 <return-value transfer-ownership="none">
3766 <doc xml:space="preserve">the number of members, or -1. In case of failure
3767 the #JsonReader is set in an error state</doc>
3768 <type name="gint" c:type="gint"/>
3771 <instance-parameter name="reader" transfer-ownership="none">
3772 <doc xml:space="preserve">a #JsonReader</doc>
3773 <type name="Reader" c:type="JsonReader*"/>
3774 </instance-parameter>
3777 <method name="end_element"
3778 c:identifier="json_reader_end_element"
3780 <doc xml:space="preserve">Moves the cursor back to the previous node after being positioned
3783 This function resets the error state of @reader, if any was set</doc>
3784 <return-value transfer-ownership="none">
3785 <type name="none" c:type="void"/>
3788 <instance-parameter name="reader" transfer-ownership="none">
3789 <doc xml:space="preserve">a #JsonReader</doc>
3790 <type name="Reader" c:type="JsonReader*"/>
3791 </instance-parameter>
3794 <method name="end_member"
3795 c:identifier="json_reader_end_member"
3797 <doc xml:space="preserve">Moves the cursor back to the previous node after being positioned
3800 This function resets the error state of @reader, if any was set</doc>
3801 <return-value transfer-ownership="none">
3802 <type name="none" c:type="void"/>
3805 <instance-parameter name="reader" transfer-ownership="none">
3806 <doc xml:space="preserve">a #JsonReader</doc>
3807 <type name="Reader" c:type="JsonReader*"/>
3808 </instance-parameter>
3811 <method name="get_boolean_value"
3812 c:identifier="json_reader_get_boolean_value"
3814 <doc xml:space="preserve">Retrieves the boolean value of the current position of @reader</doc>
3815 <return-value transfer-ownership="none">
3816 <doc xml:space="preserve">the boolean value</doc>
3817 <type name="gboolean" c:type="gboolean"/>
3820 <instance-parameter name="reader" transfer-ownership="none">
3821 <doc xml:space="preserve">a #JsonReader</doc>
3822 <type name="Reader" c:type="JsonReader*"/>
3823 </instance-parameter>
3826 <method name="get_double_value"
3827 c:identifier="json_reader_get_double_value"
3829 <doc xml:space="preserve">Retrieves the floating point value of the current position of @reader</doc>
3830 <return-value transfer-ownership="none">
3831 <doc xml:space="preserve">the floating point value</doc>
3832 <type name="gdouble" c:type="gdouble"/>
3835 <instance-parameter name="reader" transfer-ownership="none">
3836 <doc xml:space="preserve">a #JsonReader</doc>
3837 <type name="Reader" c:type="JsonReader*"/>
3838 </instance-parameter>
3841 <method name="get_error"
3842 c:identifier="json_reader_get_error"
3844 <doc xml:space="preserve">Retrieves the #GError currently set on @reader, if the #JsonReader
3845 is in error state</doc>
3846 <return-value transfer-ownership="none">
3847 <doc xml:space="preserve">the pointer to the error, or %NULL</doc>
3848 <type name="GLib.Error" c:type="const GError*"/>
3851 <instance-parameter name="reader" transfer-ownership="none">
3852 <doc xml:space="preserve">a #JsonReader</doc>
3853 <type name="Reader" c:type="JsonReader*"/>
3854 </instance-parameter>
3857 <method name="get_int_value"
3858 c:identifier="json_reader_get_int_value"
3860 <doc xml:space="preserve">Retrieves the integer value of the current position of @reader</doc>
3861 <return-value transfer-ownership="none">
3862 <doc xml:space="preserve">the integer value</doc>
3863 <type name="gint64" c:type="gint64"/>
3866 <instance-parameter name="reader" transfer-ownership="none">
3867 <doc xml:space="preserve">a #JsonReader</doc>
3868 <type name="Reader" c:type="JsonReader*"/>
3869 </instance-parameter>
3872 <method name="get_member_name"
3873 c:identifier="json_reader_get_member_name"
3875 <doc xml:space="preserve">Retrieves the name of the current member.</doc>
3876 <return-value transfer-ownership="none">
3877 <doc xml:space="preserve">the name of the member, or %NULL</doc>
3878 <type name="utf8" c:type="const gchar*"/>
3881 <instance-parameter name="reader" transfer-ownership="none">
3882 <doc xml:space="preserve">a #JsonReader</doc>
3883 <type name="Reader" c:type="JsonReader*"/>
3884 </instance-parameter>
3887 <method name="get_null_value"
3888 c:identifier="json_reader_get_null_value"
3890 <doc xml:space="preserve">Checks whether the value of the current position of @reader is 'null'</doc>
3891 <return-value transfer-ownership="none">
3892 <doc xml:space="preserve">%TRUE if 'null' is set, and %FALSE otherwise</doc>
3893 <type name="gboolean" c:type="gboolean"/>
3896 <instance-parameter name="reader" transfer-ownership="none">
3897 <doc xml:space="preserve">a #JsonReader</doc>
3898 <type name="Reader" c:type="JsonReader*"/>
3899 </instance-parameter>
3902 <method name="get_string_value"
3903 c:identifier="json_reader_get_string_value"
3905 <doc xml:space="preserve">Retrieves the string value of the current position of @reader</doc>
3906 <return-value transfer-ownership="none">
3907 <doc xml:space="preserve">the string value</doc>
3908 <type name="utf8" c:type="const gchar*"/>
3911 <instance-parameter name="reader" transfer-ownership="none">
3912 <doc xml:space="preserve">a #JsonReader</doc>
3913 <type name="Reader" c:type="JsonReader*"/>
3914 </instance-parameter>
3917 <method name="get_value"
3918 c:identifier="json_reader_get_value"
3920 <doc xml:space="preserve">Retrieves the #JsonNode of the current position of @reader</doc>
3921 <return-value transfer-ownership="none">
3922 <doc xml:space="preserve">a #JsonNode, or %NULL. The returned node
3923 is owned by the #JsonReader and it should not be modified or freed
3925 <type name="Node" c:type="JsonNode*"/>
3928 <instance-parameter name="reader" transfer-ownership="none">
3929 <doc xml:space="preserve">a #JsonReader</doc>
3930 <type name="Reader" c:type="JsonReader*"/>
3931 </instance-parameter>
3934 <method name="is_array"
3935 c:identifier="json_reader_is_array"
3937 <doc xml:space="preserve">Checks whether the @reader is currently on an array</doc>
3938 <return-value transfer-ownership="none">
3939 <doc xml:space="preserve">%TRUE if the #JsonReader is on an array, and %FALSE
3941 <type name="gboolean" c:type="gboolean"/>
3944 <instance-parameter name="reader" transfer-ownership="none">
3945 <doc xml:space="preserve">a #JsonReader</doc>
3946 <type name="Reader" c:type="JsonReader*"/>
3947 </instance-parameter>
3950 <method name="is_object"
3951 c:identifier="json_reader_is_object"
3953 <doc xml:space="preserve">Checks whether the @reader is currently on an object</doc>
3954 <return-value transfer-ownership="none">
3955 <doc xml:space="preserve">%TRUE if the #JsonReader is on an object, and %FALSE
3957 <type name="gboolean" c:type="gboolean"/>
3960 <instance-parameter name="reader" transfer-ownership="none">
3961 <doc xml:space="preserve">a #JsonReader</doc>
3962 <type name="Reader" c:type="JsonReader*"/>
3963 </instance-parameter>
3966 <method name="is_value"
3967 c:identifier="json_reader_is_value"
3969 <doc xml:space="preserve">Checks whether the @reader is currently on a value</doc>
3970 <return-value transfer-ownership="none">
3971 <doc xml:space="preserve">%TRUE if the #JsonReader is on a value, and %FALSE
3973 <type name="gboolean" c:type="gboolean"/>
3976 <instance-parameter name="reader" transfer-ownership="none">
3977 <doc xml:space="preserve">a #JsonReader</doc>
3978 <type name="Reader" c:type="JsonReader*"/>
3979 </instance-parameter>
3982 <method name="list_members"
3983 c:identifier="json_reader_list_members"
3985 <doc xml:space="preserve">Retrieves a list of member names from the current position, if @reader
3986 is positioned on an object.</doc>
3987 <return-value transfer-ownership="full">
3988 <doc xml:space="preserve">a newly allocated, %NULL-terminated
3989 array of strings holding the members name. Use g_strfreev() when
3991 <array c:type="gchar**">
3996 <instance-parameter name="reader" transfer-ownership="none">
3997 <doc xml:space="preserve">a #JsonReader</doc>
3998 <type name="Reader" c:type="JsonReader*"/>
3999 </instance-parameter>
4002 <method name="read_element"
4003 c:identifier="json_reader_read_element"
4005 <doc xml:space="preserve">Advances the cursor of @reader to the element @index_ of the array
4006 or the object at the current position.
4008 You can use the json_reader_get_value* family of functions to retrieve
4009 the value of the element; for instance:
4012 json_reader_read_element (reader, 0);
4013 int_value = json_reader_get_int_value (reader);
4016 After reading the value, json_reader_end_element() should be called to
4017 reposition the cursor inside the #JsonReader, e.g.:
4020 json_reader_read_element (reader, 1);
4021 str_value = json_reader_get_string_value (reader);
4022 json_reader_end_element (reader);
4024 json_reader_read_element (reader, 2);
4025 str_value = json_reader_get_string_value (reader);
4026 json_reader_end_element (reader);
4029 If @reader is not currently on an array or an object, or if the @index_ is
4030 bigger than the size of the array or the object, the #JsonReader will be
4031 put in an error state until json_reader_end_element() is called. This means
4032 that if used conditionally, json_reader_end_element() must be called on both
4036 if (!json_reader_read_element (reader, 1))
4038 json_reader_end_element (reader);
4039 g_set_error (error, …);
4043 str_value = json_reader_get_string_value (reader);
4044 json_reader_end_element (reader);
4046 <return-value transfer-ownership="none">
4047 <doc xml:space="preserve">%TRUE on success, and %FALSE otherwise</doc>
4048 <type name="gboolean" c:type="gboolean"/>
4051 <instance-parameter name="reader" transfer-ownership="none">
4052 <doc xml:space="preserve">a #JsonReader</doc>
4053 <type name="Reader" c:type="JsonReader*"/>
4054 </instance-parameter>
4055 <parameter name="index_" transfer-ownership="none">
4056 <doc xml:space="preserve">the index of the element</doc>
4057 <type name="guint" c:type="guint"/>
4061 <method name="read_member"
4062 c:identifier="json_reader_read_member"
4064 <doc xml:space="preserve">Advances the cursor of @reader to the @member_name of the object at the
4067 You can use the json_reader_get_value* family of functions to retrieve
4068 the value of the member; for instance:
4071 json_reader_read_member (reader, "width");
4072 width = json_reader_get_int_value (reader);
4075 After reading the value, json_reader_end_member() should be called to
4076 reposition the cursor inside the #JsonReader, e.g.:
4079 json_reader_read_member (reader, "author");
4080 author = json_reader_get_string_value (reader);
4081 json_reader_end_member (reader);
4083 json_reader_read_member (reader, "title");
4084 title = json_reader_get_string_value (reader);
4085 json_reader_end_member (reader);
4088 If @reader is not currently on an object, or if the @member_name is not
4089 defined in the object, the #JsonReader will be put in an error state until
4090 json_reader_end_member() is called. This means that if used conditionally,
4091 json_reader_end_member() must be called on both code paths:
4094 if (!json_reader_read_member (reader, "title"))
4096 json_reader_end_member (reader);
4097 g_set_error (error, …);
4101 str_value = json_reader_get_string_value (reader);
4102 json_reader_end_member (reader);
4104 <return-value transfer-ownership="none">
4105 <doc xml:space="preserve">%TRUE on success, and %FALSE otherwise</doc>
4106 <type name="gboolean" c:type="gboolean"/>
4109 <instance-parameter name="reader" transfer-ownership="none">
4110 <doc xml:space="preserve">a #JsonReader</doc>
4111 <type name="Reader" c:type="JsonReader*"/>
4112 </instance-parameter>
4113 <parameter name="member_name" transfer-ownership="none">
4114 <doc xml:space="preserve">the name of the member to read</doc>
4115 <type name="utf8" c:type="const gchar*"/>
4119 <method name="set_root"
4120 c:identifier="json_reader_set_root"
4122 <doc xml:space="preserve">Sets the root #JsonNode to be read by @reader. The @reader will take
4125 If another #JsonNode is currently set as root, it will be replaced.</doc>
4126 <return-value transfer-ownership="none">
4127 <type name="none" c:type="void"/>
4130 <instance-parameter name="reader" transfer-ownership="none">
4131 <doc xml:space="preserve">a #JsonReader</doc>
4132 <type name="Reader" c:type="JsonReader*"/>
4133 </instance-parameter>
4134 <parameter name="root"
4135 transfer-ownership="none"
4138 <doc xml:space="preserve">a #JsonNode</doc>
4139 <type name="Node" c:type="JsonNode*"/>
4143 <property name="root"
4147 transfer-ownership="none">
4148 <doc xml:space="preserve">The root of the JSON tree that the #JsonReader should read.</doc>
4151 <field name="parent_instance" readable="0" private="1">
4152 <type name="GObject.Object" c:type="GObject"/>
4154 <field name="priv" readable="0" private="1">
4155 <type name="ReaderPrivate" c:type="JsonReaderPrivate*"/>
4158 <record name="ReaderClass"
4159 c:type="JsonReaderClass"
4160 glib:is-gtype-struct-for="Reader"
4162 <doc xml:space="preserve">The `JsonReaderClass` structure contains only private data</doc>
4163 <field name="parent_class" readable="0" private="1">
4164 <type name="GObject.ObjectClass" c:type="GObjectClass"/>
4166 <field name="_json_padding0" introspectable="0">
4167 <callback name="_json_padding0">
4168 <return-value transfer-ownership="none">
4169 <type name="none" c:type="void"/>
4173 <field name="_json_padding1" introspectable="0">
4174 <callback name="_json_padding1">
4175 <return-value transfer-ownership="none">
4176 <type name="none" c:type="void"/>
4180 <field name="_json_padding2" introspectable="0">
4181 <callback name="_json_padding2">
4182 <return-value transfer-ownership="none">
4183 <type name="none" c:type="void"/>
4187 <field name="_json_padding3" introspectable="0">
4188 <callback name="_json_padding3">
4189 <return-value transfer-ownership="none">
4190 <type name="none" c:type="void"/>
4194 <field name="_json_padding4" introspectable="0">
4195 <callback name="_json_padding4">
4196 <return-value transfer-ownership="none">
4197 <type name="none" c:type="void"/>
4202 <enumeration name="ReaderError"
4204 glib:type-name="JsonReaderError"
4205 glib:get-type="json_reader_error_get_type"
4206 c:type="JsonReaderError"
4207 glib:error-domain="json-reader-error-quark">
4208 <doc xml:space="preserve">Error codes enumeration for #JsonReader errors</doc>
4209 <member name="no_array"
4211 c:identifier="JSON_READER_ERROR_NO_ARRAY"
4212 glib:nick="no-array">
4213 <doc xml:space="preserve">No array found at the current position</doc>
4215 <member name="invalid_index"
4217 c:identifier="JSON_READER_ERROR_INVALID_INDEX"
4218 glib:nick="invalid-index">
4219 <doc xml:space="preserve">Index out of bounds</doc>
4221 <member name="no_object"
4223 c:identifier="JSON_READER_ERROR_NO_OBJECT"
4224 glib:nick="no-object">
4225 <doc xml:space="preserve">No object found at the current position</doc>
4227 <member name="invalid_member"
4229 c:identifier="JSON_READER_ERROR_INVALID_MEMBER"
4230 glib:nick="invalid-member">
4231 <doc xml:space="preserve">Member not found</doc>
4233 <member name="invalid_node"
4235 c:identifier="JSON_READER_ERROR_INVALID_NODE"
4236 glib:nick="invalid-node">
4237 <doc xml:space="preserve">No valid node found at the current position</doc>
4239 <member name="no_value"
4241 c:identifier="JSON_READER_ERROR_NO_VALUE"
4242 glib:nick="no-value">
4243 <doc xml:space="preserve">The node at the current position does not
4246 <member name="invalid_type"
4248 c:identifier="JSON_READER_ERROR_INVALID_TYPE"
4249 glib:nick="invalid-type">
4250 <doc xml:space="preserve">The node at the current position does not
4251 hold a value of the desired type</doc>
4253 <function name="quark" c:identifier="json_reader_error_quark">
4254 <return-value transfer-ownership="none">
4255 <type name="GLib.Quark" c:type="GQuark"/>
4259 <record name="ReaderPrivate" c:type="JsonReaderPrivate" disguised="1">
4261 <interface name="Serializable"
4262 c:symbol-prefix="serializable"
4263 c:type="JsonSerializable"
4264 glib:type-name="JsonSerializable"
4265 glib:get-type="json_serializable_get_type"
4266 glib:type-struct="SerializableIface">
4267 <virtual-method name="deserialize_property"
4268 invoker="deserialize_property">
4269 <doc xml:space="preserve">Asks a #JsonSerializable implementation to deserialize the
4270 property contained inside @property_node into @value.</doc>
4271 <return-value transfer-ownership="none">
4272 <doc xml:space="preserve">%TRUE if the property was successfully deserialized.</doc>
4273 <type name="gboolean" c:type="gboolean"/>
4276 <instance-parameter name="serializable" transfer-ownership="none">
4277 <doc xml:space="preserve">a #JsonSerializable</doc>
4278 <type name="Serializable" c:type="JsonSerializable*"/>
4279 </instance-parameter>
4280 <parameter name="property_name" transfer-ownership="none">
4281 <doc xml:space="preserve">the name of the property</doc>
4282 <type name="utf8" c:type="const gchar*"/>
4284 <parameter name="value"
4286 caller-allocates="1"
4287 transfer-ownership="none">
4288 <doc xml:space="preserve">a pointer to an uninitialized #GValue</doc>
4289 <type name="GObject.Value" c:type="GValue*"/>
4291 <parameter name="pspec" transfer-ownership="none">
4292 <doc xml:space="preserve">a #GParamSpec</doc>
4293 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4295 <parameter name="property_node" transfer-ownership="none">
4296 <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4297 <type name="Node" c:type="JsonNode*"/>
4301 <virtual-method name="find_property"
4302 invoker="find_property"
4304 <doc xml:space="preserve">Calls the #JsonSerializableIface.find_property() implementation on
4305 the @serializable instance. *</doc>
4306 <return-value transfer-ownership="none">
4307 <doc xml:space="preserve">the #GParamSpec for the property
4308 or %NULL if no property was found</doc>
4309 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4312 <instance-parameter name="serializable" transfer-ownership="none">
4313 <doc xml:space="preserve">a #JsonSerializable</doc>
4314 <type name="Serializable" c:type="JsonSerializable*"/>
4315 </instance-parameter>
4316 <parameter name="name" transfer-ownership="none">
4317 <doc xml:space="preserve">the name of the property</doc>
4318 <type name="utf8" c:type="const char*"/>
4322 <virtual-method name="get_property"
4323 invoker="get_property"
4325 <doc xml:space="preserve">Calls the #JsonSerializableIface.get_property() implementation
4326 on the @serializable instance.</doc>
4327 <return-value transfer-ownership="none">
4328 <type name="none" c:type="void"/>
4331 <instance-parameter name="serializable" transfer-ownership="none">
4332 <doc xml:space="preserve">a #JsonSerializable</doc>
4333 <type name="Serializable" c:type="JsonSerializable*"/>
4334 </instance-parameter>
4335 <parameter name="pspec" transfer-ownership="none">
4336 <doc xml:space="preserve">a #GParamSpec</doc>
4337 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4339 <parameter name="value"
4341 caller-allocates="1"
4342 transfer-ownership="none">
4343 <doc xml:space="preserve">return location for the property value</doc>
4344 <type name="GObject.Value" c:type="GValue*"/>
4348 <virtual-method name="list_properties" introspectable="0">
4350 <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
4353 <instance-parameter name="serializable" transfer-ownership="none">
4354 <type name="Serializable" c:type="JsonSerializable*"/>
4355 </instance-parameter>
4356 <parameter name="n_pspecs" transfer-ownership="none">
4357 <type name="guint" c:type="guint*"/>
4361 <virtual-method name="serialize_property" invoker="serialize_property">
4362 <doc xml:space="preserve">Asks a #JsonSerializable implementation to serialize a #GObject
4363 property into a #JsonNode object.</doc>
4364 <return-value transfer-ownership="full">
4365 <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4366 <type name="Node" c:type="JsonNode*"/>
4369 <instance-parameter name="serializable" transfer-ownership="none">
4370 <doc xml:space="preserve">a #JsonSerializable object</doc>
4371 <type name="Serializable" c:type="JsonSerializable*"/>
4372 </instance-parameter>
4373 <parameter name="property_name" transfer-ownership="none">
4374 <doc xml:space="preserve">the name of the property</doc>
4375 <type name="utf8" c:type="const gchar*"/>
4377 <parameter name="value" transfer-ownership="none">
4378 <doc xml:space="preserve">the value of the property</doc>
4379 <type name="GObject.Value" c:type="const GValue*"/>
4381 <parameter name="pspec" transfer-ownership="none">
4382 <doc xml:space="preserve">a #GParamSpec</doc>
4383 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4387 <virtual-method name="set_property"
4388 invoker="set_property"
4390 <doc xml:space="preserve">Calls the #JsonSerializableIface.set_property() implementation
4391 on the @serializable instance.</doc>
4392 <return-value transfer-ownership="none">
4393 <type name="none" c:type="void"/>
4396 <instance-parameter name="serializable" transfer-ownership="none">
4397 <doc xml:space="preserve">a #JsonSerializable</doc>
4398 <type name="Serializable" c:type="JsonSerializable*"/>
4399 </instance-parameter>
4400 <parameter name="pspec" transfer-ownership="none">
4401 <doc xml:space="preserve">a #GParamSpec</doc>
4402 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4404 <parameter name="value" transfer-ownership="none">
4405 <doc xml:space="preserve">the property value to set</doc>
4406 <type name="GObject.Value" c:type="const GValue*"/>
4410 <method name="default_deserialize_property"
4411 c:identifier="json_serializable_default_deserialize_property"
4413 <doc xml:space="preserve">Calls the default implementation of the #JsonSerializable
4414 deserialize_property() virtual function
4416 This function can be used inside a custom implementation
4417 of the deserialize_property() virtual function in lieu of:
4419 |[<!-- language="C" -->
4420 JsonSerializable *iface;
4423 iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
4424 res = iface->deserialize_property (serializable, property_name,
4429 <return-value transfer-ownership="none">
4430 <doc xml:space="preserve">%TRUE if the property was successfully deserialized.</doc>
4431 <type name="gboolean" c:type="gboolean"/>
4434 <instance-parameter name="serializable" transfer-ownership="none">
4435 <doc xml:space="preserve">a #JsonSerializable</doc>
4436 <type name="Serializable" c:type="JsonSerializable*"/>
4437 </instance-parameter>
4438 <parameter name="property_name" transfer-ownership="none">
4439 <doc xml:space="preserve">the name of the property</doc>
4440 <type name="utf8" c:type="const gchar*"/>
4442 <parameter name="value" transfer-ownership="none">
4443 <doc xml:space="preserve">a pointer to an uninitialized #GValue</doc>
4444 <type name="GObject.Value" c:type="GValue*"/>
4446 <parameter name="pspec" transfer-ownership="none">
4447 <doc xml:space="preserve">a #GParamSpec</doc>
4448 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4450 <parameter name="property_node" transfer-ownership="none">
4451 <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4452 <type name="Node" c:type="JsonNode*"/>
4456 <method name="default_serialize_property"
4457 c:identifier="json_serializable_default_serialize_property"
4459 <doc xml:space="preserve">Calls the default implementation of the #JsonSerializable
4460 #JsonSerializableIface.serialize_property() virtual function.
4462 This function can be used inside a custom implementation
4463 of the #JsonSerializableIface.serialize_property() virtual
4464 function in lieu of calling the default implementation
4465 through g_type_default_interface_peek():
4467 |[<!-- language="C" -->
4468 JsonSerializable *iface;
4471 iface = g_type_default_interface_peek (JSON_TYPE_SERIALIZABLE);
4472 node = iface->serialize_property (serializable, property_name,
4476 <return-value transfer-ownership="full">
4477 <doc xml:space="preserve">a #JsonNode containing the serialized
4479 <type name="Node" c:type="JsonNode*"/>
4482 <instance-parameter name="serializable" transfer-ownership="none">
4483 <doc xml:space="preserve">a #JsonSerializable object</doc>
4484 <type name="Serializable" c:type="JsonSerializable*"/>
4485 </instance-parameter>
4486 <parameter name="property_name" transfer-ownership="none">
4487 <doc xml:space="preserve">the name of the property</doc>
4488 <type name="utf8" c:type="const gchar*"/>
4490 <parameter name="value" transfer-ownership="none">
4491 <doc xml:space="preserve">the value of the property</doc>
4492 <type name="GObject.Value" c:type="const GValue*"/>
4494 <parameter name="pspec" transfer-ownership="none">
4495 <doc xml:space="preserve">a #GParamSpec</doc>
4496 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4500 <method name="deserialize_property"
4501 c:identifier="json_serializable_deserialize_property">
4502 <doc xml:space="preserve">Asks a #JsonSerializable implementation to deserialize the
4503 property contained inside @property_node into @value.</doc>
4504 <return-value transfer-ownership="none">
4505 <doc xml:space="preserve">%TRUE if the property was successfully deserialized.</doc>
4506 <type name="gboolean" c:type="gboolean"/>
4509 <instance-parameter name="serializable" transfer-ownership="none">
4510 <doc xml:space="preserve">a #JsonSerializable</doc>
4511 <type name="Serializable" c:type="JsonSerializable*"/>
4512 </instance-parameter>
4513 <parameter name="property_name" transfer-ownership="none">
4514 <doc xml:space="preserve">the name of the property</doc>
4515 <type name="utf8" c:type="const gchar*"/>
4517 <parameter name="value"
4519 caller-allocates="1"
4520 transfer-ownership="none">
4521 <doc xml:space="preserve">a pointer to an uninitialized #GValue</doc>
4522 <type name="GObject.Value" c:type="GValue*"/>
4524 <parameter name="pspec" transfer-ownership="none">
4525 <doc xml:space="preserve">a #GParamSpec</doc>
4526 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4528 <parameter name="property_node" transfer-ownership="none">
4529 <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4530 <type name="Node" c:type="JsonNode*"/>
4534 <method name="find_property"
4535 c:identifier="json_serializable_find_property"
4537 <doc xml:space="preserve">Calls the #JsonSerializableIface.find_property() implementation on
4538 the @serializable instance. *</doc>
4539 <return-value transfer-ownership="none">
4540 <doc xml:space="preserve">the #GParamSpec for the property
4541 or %NULL if no property was found</doc>
4542 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4545 <instance-parameter name="serializable" transfer-ownership="none">
4546 <doc xml:space="preserve">a #JsonSerializable</doc>
4547 <type name="Serializable" c:type="JsonSerializable*"/>
4548 </instance-parameter>
4549 <parameter name="name" transfer-ownership="none">
4550 <doc xml:space="preserve">the name of the property</doc>
4551 <type name="utf8" c:type="const char*"/>
4555 <method name="get_property"
4556 c:identifier="json_serializable_get_property"
4558 <doc xml:space="preserve">Calls the #JsonSerializableIface.get_property() implementation
4559 on the @serializable instance.</doc>
4560 <return-value transfer-ownership="none">
4561 <type name="none" c:type="void"/>
4564 <instance-parameter name="serializable" transfer-ownership="none">
4565 <doc xml:space="preserve">a #JsonSerializable</doc>
4566 <type name="Serializable" c:type="JsonSerializable*"/>
4567 </instance-parameter>
4568 <parameter name="pspec" transfer-ownership="none">
4569 <doc xml:space="preserve">a #GParamSpec</doc>
4570 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4572 <parameter name="value"
4574 caller-allocates="1"
4575 transfer-ownership="none">
4576 <doc xml:space="preserve">return location for the property value</doc>
4577 <type name="GObject.Value" c:type="GValue*"/>
4581 <method name="list_properties"
4582 c:identifier="json_serializable_list_properties"
4584 <doc xml:space="preserve">Calls the #JsonSerializableIface.list_properties() implementation on
4585 the @serializable instance.</doc>
4586 <return-value transfer-ownership="container">
4587 <doc xml:space="preserve">an array
4588 of #GParamSpec. Use g_free() to free the array when done.</doc>
4589 <array length="0" zero-terminated="0" c:type="GParamSpec**">
4590 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4594 <instance-parameter name="serializable" transfer-ownership="none">
4595 <doc xml:space="preserve">a #JsonSerializable</doc>
4596 <type name="Serializable" c:type="JsonSerializable*"/>
4597 </instance-parameter>
4598 <parameter name="n_pspecs"
4600 caller-allocates="0"
4601 transfer-ownership="full">
4602 <doc xml:space="preserve">return location for the length of the array
4603 of #GParamSpec returned by the function</doc>
4604 <type name="guint" c:type="guint*"/>
4608 <method name="serialize_property"
4609 c:identifier="json_serializable_serialize_property">
4610 <doc xml:space="preserve">Asks a #JsonSerializable implementation to serialize a #GObject
4611 property into a #JsonNode object.</doc>
4612 <return-value transfer-ownership="full">
4613 <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4614 <type name="Node" c:type="JsonNode*"/>
4617 <instance-parameter name="serializable" transfer-ownership="none">
4618 <doc xml:space="preserve">a #JsonSerializable object</doc>
4619 <type name="Serializable" c:type="JsonSerializable*"/>
4620 </instance-parameter>
4621 <parameter name="property_name" transfer-ownership="none">
4622 <doc xml:space="preserve">the name of the property</doc>
4623 <type name="utf8" c:type="const gchar*"/>
4625 <parameter name="value" transfer-ownership="none">
4626 <doc xml:space="preserve">the value of the property</doc>
4627 <type name="GObject.Value" c:type="const GValue*"/>
4629 <parameter name="pspec" transfer-ownership="none">
4630 <doc xml:space="preserve">a #GParamSpec</doc>
4631 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4635 <method name="set_property"
4636 c:identifier="json_serializable_set_property"
4638 <doc xml:space="preserve">Calls the #JsonSerializableIface.set_property() implementation
4639 on the @serializable instance.</doc>
4640 <return-value transfer-ownership="none">
4641 <type name="none" c:type="void"/>
4644 <instance-parameter name="serializable" transfer-ownership="none">
4645 <doc xml:space="preserve">a #JsonSerializable</doc>
4646 <type name="Serializable" c:type="JsonSerializable*"/>
4647 </instance-parameter>
4648 <parameter name="pspec" transfer-ownership="none">
4649 <doc xml:space="preserve">a #GParamSpec</doc>
4650 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4652 <parameter name="value" transfer-ownership="none">
4653 <doc xml:space="preserve">the property value to set</doc>
4654 <type name="GObject.Value" c:type="const GValue*"/>
4659 <record name="SerializableIface"
4660 c:type="JsonSerializableIface"
4661 glib:is-gtype-struct-for="Serializable">
4662 <doc xml:space="preserve">Interface that allows serializing and deserializing #GObject instances
4663 with properties storing complex data types. The json_serialize_gobject()
4664 function will check if the passed #GObject implements this interface,
4665 so it can also be used to override the default property serialization
4667 <field name="g_iface" readable="0" private="1">
4668 <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
4670 <field name="serialize_property">
4671 <callback name="serialize_property">
4672 <return-value transfer-ownership="full">
4673 <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4674 <type name="Node" c:type="JsonNode*"/>
4677 <parameter name="serializable" transfer-ownership="none">
4678 <doc xml:space="preserve">a #JsonSerializable object</doc>
4679 <type name="Serializable" c:type="JsonSerializable*"/>
4681 <parameter name="property_name" transfer-ownership="none">
4682 <doc xml:space="preserve">the name of the property</doc>
4683 <type name="utf8" c:type="const gchar*"/>
4685 <parameter name="value" transfer-ownership="none">
4686 <doc xml:space="preserve">the value of the property</doc>
4687 <type name="GObject.Value" c:type="const GValue*"/>
4689 <parameter name="pspec" transfer-ownership="none">
4690 <doc xml:space="preserve">a #GParamSpec</doc>
4691 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4696 <field name="deserialize_property">
4697 <callback name="deserialize_property">
4698 <return-value transfer-ownership="none">
4699 <doc xml:space="preserve">%TRUE if the property was successfully deserialized.</doc>
4700 <type name="gboolean" c:type="gboolean"/>
4703 <parameter name="serializable" transfer-ownership="none">
4704 <doc xml:space="preserve">a #JsonSerializable</doc>
4705 <type name="Serializable" c:type="JsonSerializable*"/>
4707 <parameter name="property_name" transfer-ownership="none">
4708 <doc xml:space="preserve">the name of the property</doc>
4709 <type name="utf8" c:type="const gchar*"/>
4711 <parameter name="value"
4713 caller-allocates="1"
4714 transfer-ownership="none">
4715 <doc xml:space="preserve">a pointer to an uninitialized #GValue</doc>
4716 <type name="GObject.Value" c:type="GValue*"/>
4718 <parameter name="pspec" transfer-ownership="none">
4719 <doc xml:space="preserve">a #GParamSpec</doc>
4720 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4722 <parameter name="property_node" transfer-ownership="none">
4723 <doc xml:space="preserve">a #JsonNode containing the serialized property</doc>
4724 <type name="Node" c:type="JsonNode*"/>
4729 <field name="find_property">
4730 <callback name="find_property">
4731 <return-value transfer-ownership="none">
4732 <doc xml:space="preserve">the #GParamSpec for the property
4733 or %NULL if no property was found</doc>
4734 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4737 <parameter name="serializable" transfer-ownership="none">
4738 <doc xml:space="preserve">a #JsonSerializable</doc>
4739 <type name="Serializable" c:type="JsonSerializable*"/>
4741 <parameter name="name" transfer-ownership="none">
4742 <doc xml:space="preserve">the name of the property</doc>
4743 <type name="utf8" c:type="const char*"/>
4748 <field name="list_properties" introspectable="0">
4749 <callback name="list_properties" introspectable="0">
4751 <type name="GObject.ParamSpec" c:type="GParamSpec**"/>
4754 <parameter name="serializable" transfer-ownership="none">
4755 <type name="Serializable" c:type="JsonSerializable*"/>
4757 <parameter name="n_pspecs" transfer-ownership="none">
4758 <type name="guint" c:type="guint*"/>
4763 <field name="set_property">
4764 <callback name="set_property">
4765 <return-value transfer-ownership="none">
4766 <type name="none" c:type="void"/>
4769 <parameter name="serializable" transfer-ownership="none">
4770 <doc xml:space="preserve">a #JsonSerializable</doc>
4771 <type name="Serializable" c:type="JsonSerializable*"/>
4773 <parameter name="pspec" transfer-ownership="none">
4774 <doc xml:space="preserve">a #GParamSpec</doc>
4775 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4777 <parameter name="value" transfer-ownership="none">
4778 <doc xml:space="preserve">the property value to set</doc>
4779 <type name="GObject.Value" c:type="const GValue*"/>
4784 <field name="get_property">
4785 <callback name="get_property">
4786 <return-value transfer-ownership="none">
4787 <type name="none" c:type="void"/>
4790 <parameter name="serializable" transfer-ownership="none">
4791 <doc xml:space="preserve">a #JsonSerializable</doc>
4792 <type name="Serializable" c:type="JsonSerializable*"/>
4794 <parameter name="pspec" transfer-ownership="none">
4795 <doc xml:space="preserve">a #GParamSpec</doc>
4796 <type name="GObject.ParamSpec" c:type="GParamSpec*"/>
4798 <parameter name="value"
4800 caller-allocates="1"
4801 transfer-ownership="none">
4802 <doc xml:space="preserve">return location for the property value</doc>
4803 <type name="GObject.Value" c:type="GValue*"/>
4809 <constant name="VERSION_S" value="1.2.4" c:type="JSON_VERSION_S">
4810 <doc xml:space="preserve">JSON-GLib version, encoded as a string, useful for printing and
4811 concatenation.</doc>
4812 <type name="utf8" c:type="gchar*"/>
4814 <function name="boxed_can_deserialize"
4815 c:identifier="json_boxed_can_deserialize"
4817 <doc xml:space="preserve">Checks whether it is possible to deserialize a #GBoxed of
4818 type @gboxed_type from a #JsonNode of type @node_type</doc>
4819 <return-value transfer-ownership="none">
4820 <doc xml:space="preserve">%TRUE if the type can be deserialized, %FALSE otherwise</doc>
4821 <type name="gboolean" c:type="gboolean"/>
4824 <parameter name="gboxed_type" transfer-ownership="none">
4825 <doc xml:space="preserve">a boxed type</doc>
4826 <type name="GType" c:type="GType"/>
4828 <parameter name="node_type" transfer-ownership="none">
4829 <doc xml:space="preserve">a #JsonNode type</doc>
4830 <type name="NodeType" c:type="JsonNodeType"/>
4834 <function name="boxed_can_serialize"
4835 c:identifier="json_boxed_can_serialize"
4837 <doc xml:space="preserve">Checks whether it is possible to serialize a #GBoxed of
4838 type @gboxed_type into a #JsonNode. The type of the
4839 #JsonNode is placed inside @node_type if the function
4840 returns %TRUE and it's undefined otherwise.</doc>
4841 <return-value transfer-ownership="none">
4842 <doc xml:space="preserve">%TRUE if the type can be serialized,
4843 and %FALSE otherwise.</doc>
4844 <type name="gboolean" c:type="gboolean"/>
4847 <parameter name="gboxed_type" transfer-ownership="none">
4848 <doc xml:space="preserve">a boxed type</doc>
4849 <type name="GType" c:type="GType"/>
4851 <parameter name="node_type"
4853 caller-allocates="0"
4854 transfer-ownership="full">
4855 <doc xml:space="preserve">the #JsonNode type to which the boxed type can be
4856 serialized into</doc>
4857 <type name="NodeType" c:type="JsonNodeType*"/>
4861 <function name="boxed_deserialize"
4862 c:identifier="json_boxed_deserialize"
4864 <doc xml:space="preserve">Deserializes @node into a #GBoxed of @gboxed_type</doc>
4865 <return-value transfer-ownership="full" nullable="1">
4866 <doc xml:space="preserve">the newly allocated #GBoxed. Use
4867 g_boxed_free() to release the resources allocated by this
4869 <type name="gpointer" c:type="gpointer"/>
4872 <parameter name="gboxed_type" transfer-ownership="none">
4873 <doc xml:space="preserve">a boxed type</doc>
4874 <type name="GType" c:type="GType"/>
4876 <parameter name="node" transfer-ownership="none">
4877 <doc xml:space="preserve">a #JsonNode</doc>
4878 <type name="Node" c:type="JsonNode*"/>
4882 <function name="boxed_register_deserialize_func"
4883 c:identifier="json_boxed_register_deserialize_func"
4886 <doc xml:space="preserve">Registers a deserialization function for a #GBoxed of type @gboxed_type
4887 from a #JsonNode of type @node_type</doc>
4888 <return-value transfer-ownership="none">
4889 <type name="none" c:type="void"/>
4892 <parameter name="gboxed_type" transfer-ownership="none">
4893 <doc xml:space="preserve">a boxed type</doc>
4894 <type name="GType" c:type="GType"/>
4896 <parameter name="node_type" transfer-ownership="none">
4897 <doc xml:space="preserve">a node type</doc>
4898 <type name="NodeType" c:type="JsonNodeType"/>
4900 <parameter name="deserialize_func" transfer-ownership="none">
4901 <doc xml:space="preserve">deserialization function for @boxed_type from
4902 a #JsonNode of type @node_type</doc>
4903 <type name="BoxedDeserializeFunc" c:type="JsonBoxedDeserializeFunc"/>
4907 <function name="boxed_register_serialize_func"
4908 c:identifier="json_boxed_register_serialize_func"
4911 <doc xml:space="preserve">Registers a serialization function for a #GBoxed of type @gboxed_type
4912 to a #JsonNode of type @node_type</doc>
4913 <return-value transfer-ownership="none">
4914 <type name="none" c:type="void"/>
4917 <parameter name="gboxed_type" transfer-ownership="none">
4918 <doc xml:space="preserve">a boxed type</doc>
4919 <type name="GType" c:type="GType"/>
4921 <parameter name="node_type" transfer-ownership="none">
4922 <doc xml:space="preserve">a node type</doc>
4923 <type name="NodeType" c:type="JsonNodeType"/>
4925 <parameter name="serialize_func" transfer-ownership="none">
4926 <doc xml:space="preserve">serialization function for @boxed_type into
4927 a #JsonNode of type @node_type</doc>
4928 <type name="BoxedSerializeFunc" c:type="JsonBoxedSerializeFunc"/>
4932 <function name="boxed_serialize"
4933 c:identifier="json_boxed_serialize"
4935 <doc xml:space="preserve">Serializes @boxed, a pointer to a #GBoxed of type @gboxed_type,
4936 into a #JsonNode</doc>
4937 <return-value transfer-ownership="full">
4938 <doc xml:space="preserve">a #JsonNode with the serialization of the
4939 boxed type, or %NULL if serialization either failed or was not possible</doc>
4940 <type name="Node" c:type="JsonNode*"/>
4943 <parameter name="gboxed_type" transfer-ownership="none">
4944 <doc xml:space="preserve">a boxed type</doc>
4945 <type name="GType" c:type="GType"/>
4947 <parameter name="boxed"
4948 transfer-ownership="none"
4951 <doc xml:space="preserve">a pointer to a #GBoxed of type @gboxed_type</doc>
4952 <type name="gpointer" c:type="gconstpointer"/>
4956 <function name="construct_gobject"
4957 c:identifier="json_construct_gobject"
4960 deprecated-version="0.10"
4962 <doc xml:space="preserve">Deserializes a JSON data stream and creates the corresponding
4963 #GObject class. If @gtype implements the #JsonSerializableIface
4964 interface, it will be asked to deserialize all the JSON members
4965 into the respective properties; otherwise, the default implementation
4966 will be used to translate the compatible JSON native types.
4968 Note: the JSON data stream must be an object declaration.</doc>
4969 <doc-deprecated xml:space="preserve">Use json_gobject_from_data() instead</doc-deprecated>
4970 <return-value transfer-ownership="full">
4971 <doc xml:space="preserve">a #GObject or %NULL</doc>
4972 <type name="GObject.Object" c:type="GObject*"/>
4975 <parameter name="gtype" transfer-ownership="none">
4976 <doc xml:space="preserve">the #GType of object to construct</doc>
4977 <type name="GType" c:type="GType"/>
4979 <parameter name="data" transfer-ownership="none">
4980 <doc xml:space="preserve">a JSON data stream</doc>
4981 <type name="utf8" c:type="const gchar*"/>
4983 <parameter name="length" transfer-ownership="none">
4984 <doc xml:space="preserve">length of the data stream</doc>
4985 <type name="gsize" c:type="gsize"/>
4989 <function name="from_string"
4990 c:identifier="json_from_string"
4993 <doc xml:space="preserve">Parses the string in @str and returns a #JsonNode representing
4996 In case of parsing error, this function returns %NULL and sets
4997 @error appropriately.</doc>
4998 <return-value transfer-ownership="full">
4999 <doc xml:space="preserve">a #JsonNode, or %NULL</doc>
5000 <type name="Node" c:type="JsonNode*"/>
5003 <parameter name="str" transfer-ownership="none">
5004 <doc xml:space="preserve">a valid UTF-8 string containing JSON data</doc>
5005 <type name="utf8" c:type="const char*"/>
5009 <function name="gobject_deserialize"
5010 c:identifier="json_gobject_deserialize"
5012 <doc xml:space="preserve">Creates a new #GObject of type @gtype, and constructs it
5013 using the members of the passed #JsonObject</doc>
5014 <return-value transfer-ownership="full">
5015 <doc xml:space="preserve">The newly created #GObject
5016 instance. Use g_object_unref() to free the resources
5017 allocated by this function</doc>
5018 <type name="GObject.Object" c:type="GObject*"/>
5021 <parameter name="gtype" transfer-ownership="none">
5022 <doc xml:space="preserve">the type of the #GObject to create</doc>
5023 <type name="GType" c:type="GType"/>
5025 <parameter name="node" transfer-ownership="none">
5026 <doc xml:space="preserve">a #JsonNode of type %JSON_NODE_OBJECT describing the
5027 instance of type @gtype</doc>
5028 <type name="Node" c:type="JsonNode*"/>
5032 <function name="gobject_from_data"
5033 c:identifier="json_gobject_from_data"
5036 <doc xml:space="preserve">Deserializes a JSON data stream and creates the corresponding
5037 #GObject class. If @gtype implements the #JsonSerializableIface
5038 interface, it will be asked to deserialize all the JSON members
5039 into the respective properties; otherwise, the default implementation
5040 will be used to translate the compatible JSON native types.
5042 Note: the JSON data stream must be an object declaration.</doc>
5043 <return-value transfer-ownership="full">
5044 <doc xml:space="preserve">a #GObject or %NULL</doc>
5045 <type name="GObject.Object" c:type="GObject*"/>
5048 <parameter name="gtype" transfer-ownership="none">
5049 <doc xml:space="preserve">the #GType of object to construct</doc>
5050 <type name="GType" c:type="GType"/>
5052 <parameter name="data" transfer-ownership="none">
5053 <doc xml:space="preserve">a JSON data stream</doc>
5054 <type name="utf8" c:type="const gchar*"/>
5056 <parameter name="length" transfer-ownership="none">
5057 <doc xml:space="preserve">length of the data stream, or -1 if it is NUL-terminated</doc>
5058 <type name="gssize" c:type="gssize"/>
5062 <function name="gobject_serialize"
5063 c:identifier="json_gobject_serialize"
5065 <doc xml:space="preserve">Creates a #JsonNode representing the passed #GObject
5066 instance. Each member of the returned JSON object will
5067 map to a property of the #GObject</doc>
5068 <return-value transfer-ownership="full">
5069 <doc xml:space="preserve">the newly created #JsonNode
5070 of type %JSON_NODE_OBJECT. Use json_node_unref() to free
5071 the resources allocated by this function</doc>
5072 <type name="Node" c:type="JsonNode*"/>
5075 <parameter name="gobject" transfer-ownership="none">
5076 <doc xml:space="preserve">a #GObject</doc>
5077 <type name="GObject.Object" c:type="GObject*"/>
5081 <function name="gobject_to_data"
5082 c:identifier="json_gobject_to_data"
5084 <doc xml:space="preserve">Serializes a #GObject into a JSON data stream, iterating recursively
5087 If @gobject implements the #JsonSerializableIface interface, it will
5088 be asked to serialize all its properties; otherwise, the default
5089 implementation will be use to translate the compatible types into
5090 JSON native types.</doc>
5091 <return-value transfer-ownership="full">
5092 <doc xml:space="preserve">a JSON data stream representing the passed #GObject</doc>
5093 <type name="utf8" c:type="gchar*"/>
5096 <parameter name="gobject" transfer-ownership="none">
5097 <doc xml:space="preserve">a #GObject</doc>
5098 <type name="GObject.Object" c:type="GObject*"/>
5100 <parameter name="length"
5102 caller-allocates="0"
5103 transfer-ownership="full">
5104 <doc xml:space="preserve">return value for the length of the buffer, or %NULL</doc>
5105 <type name="gsize" c:type="gsize*"/>
5109 <function name="gvariant_deserialize"
5110 c:identifier="json_gvariant_deserialize"
5113 <doc xml:space="preserve">Converts a JSON data structure to a GVariant value using @signature to
5114 resolve ambiguous data types. If no error occurs, the resulting #GVariant
5115 is guaranteed to conform to @signature.
5117 If @signature is not %NULL but does not represent a valid GVariant type
5118 string, %NULL is returned and error is set to %G_IO_ERROR_INVALID_ARGUMENT.
5119 If a @signature is provided but the JSON structure cannot be mapped to it,
5120 %NULL is returned and error is set to %G_IO_ERROR_INVALID_DATA.
5121 If @signature is %NULL, the conversion is done based strictly on the types
5124 The returned variant has a floating reference that will need to be sunk
5125 by the caller code.</doc>
5126 <return-value transfer-ownership="none">
5127 <doc xml:space="preserve">A newly created, floating #GVariant
5128 compliant with @signature, or %NULL on error</doc>
5129 <type name="GLib.Variant" c:type="GVariant*"/>
5132 <parameter name="json_node" transfer-ownership="none">
5133 <doc xml:space="preserve">A #JsonNode to convert</doc>
5134 <type name="Node" c:type="JsonNode*"/>
5136 <parameter name="signature"
5137 transfer-ownership="none"
5140 <doc xml:space="preserve">A valid #GVariant type string, or %NULL</doc>
5141 <type name="utf8" c:type="const gchar*"/>
5145 <function name="gvariant_deserialize_data"
5146 c:identifier="json_gvariant_deserialize_data"
5149 <doc xml:space="preserve">Converts a JSON string to a #GVariant value. This method works exactly
5150 like json_gvariant_deserialize(), but takes a JSON encoded string instead.
5151 The string is first converted to a #JsonNode using #JsonParser, and then
5152 json_gvariant_deserialize() is called.
5154 The returned variant has a floating reference that will need to be sunk
5155 by the caller code.</doc>
5156 <return-value transfer-ownership="none">
5157 <doc xml:space="preserve">A newly created, floating #GVariant compliant
5158 with @signature, or %NULL on error</doc>
5159 <type name="GLib.Variant" c:type="GVariant*"/>
5162 <parameter name="json" transfer-ownership="none">
5163 <doc xml:space="preserve">A JSON data string</doc>
5164 <type name="utf8" c:type="const gchar*"/>
5166 <parameter name="length" transfer-ownership="none">
5167 <doc xml:space="preserve">The length of @json, or -1 if %NULL-terminated</doc>
5168 <type name="gssize" c:type="gssize"/>
5170 <parameter name="signature"
5171 transfer-ownership="none"
5174 <doc xml:space="preserve">A valid #GVariant type string, or %NULL</doc>
5175 <type name="utf8" c:type="const gchar*"/>
5179 <function name="gvariant_serialize"
5180 c:identifier="json_gvariant_serialize"
5182 <doc xml:space="preserve">Converts @variant to a JSON tree.</doc>
5183 <return-value transfer-ownership="full">
5184 <doc xml:space="preserve">A #JsonNode representing the root of the
5185 JSON data structure obtained from @variant</doc>
5186 <type name="Node" c:type="JsonNode*"/>
5189 <parameter name="variant" transfer-ownership="none">
5190 <doc xml:space="preserve">A #GVariant to convert</doc>
5191 <type name="GLib.Variant" c:type="GVariant*"/>
5195 <function name="gvariant_serialize_data"
5196 c:identifier="json_gvariant_serialize_data"
5198 <doc xml:space="preserve">Converts @variant to its JSON encoded string representation. This method
5199 is actually a helper function. It uses json_gvariant_serialize() to obtain the
5200 JSON tree, and then #JsonGenerator to stringify it.</doc>
5201 <return-value transfer-ownership="full">
5202 <doc xml:space="preserve">The JSON encoded string corresponding to
5204 <type name="utf8" c:type="gchar*"/>
5207 <parameter name="variant" transfer-ownership="none">
5208 <doc xml:space="preserve">A #GVariant to convert</doc>
5209 <type name="GLib.Variant" c:type="GVariant*"/>
5211 <parameter name="length"
5213 caller-allocates="0"
5214 transfer-ownership="full"
5217 <doc xml:space="preserve">Return location for the length of the returned
5218 string, or %NULL</doc>
5219 <type name="gsize" c:type="gsize*"/>
5223 <function name="parser_error_quark"
5224 c:identifier="json_parser_error_quark"
5225 moved-to="ParserError.quark">
5226 <return-value transfer-ownership="none">
5227 <type name="GLib.Quark" c:type="GQuark"/>
5230 <function name="path_error_quark"
5231 c:identifier="json_path_error_quark"
5232 moved-to="PathError.quark">
5233 <return-value transfer-ownership="none">
5234 <type name="GLib.Quark" c:type="GQuark"/>
5237 <function name="reader_error_quark"
5238 c:identifier="json_reader_error_quark"
5239 moved-to="ReaderError.quark">
5240 <return-value transfer-ownership="none">
5241 <type name="GLib.Quark" c:type="GQuark"/>
5244 <function name="serialize_gobject"
5245 c:identifier="json_serialize_gobject"
5247 deprecated-version="0.10">
5248 <doc xml:space="preserve">Serializes a #GObject into a JSON data stream. If @gobject implements
5249 the #JsonSerializableIface interface, it will be asked to serizalize all
5250 its properties; otherwise, the default implementation will be use to
5251 translate the compatible types into JSON native types.</doc>
5252 <doc-deprecated xml:space="preserve">Use json_gobject_to_data() instead</doc-deprecated>
5253 <return-value transfer-ownership="full">
5254 <doc xml:space="preserve">a JSON data stream representing the passed #GObject</doc>
5255 <type name="utf8" c:type="gchar*"/>
5258 <parameter name="gobject" transfer-ownership="none">
5259 <doc xml:space="preserve">a #GObject</doc>
5260 <type name="GObject.Object" c:type="GObject*"/>
5262 <parameter name="length"
5264 caller-allocates="0"
5265 transfer-ownership="full">
5266 <doc xml:space="preserve">return value for the length of the buffer, or %NULL</doc>
5267 <type name="gsize" c:type="gsize*"/>
5271 <function name="string_compare"
5272 c:identifier="json_string_compare"
5274 <doc xml:space="preserve">Check whether @a and @b are equal UTF-8 JSON strings and return an ordering
5275 over them in strcmp() style.</doc>
5276 <return-value transfer-ownership="none">
5277 <doc xml:space="preserve">an integer less than zero if @a < @b, equal to zero if @a == @b, and
5278 greater than zero if @a > @b</doc>
5279 <type name="gint" c:type="gint"/>
5282 <parameter name="a" transfer-ownership="none">
5283 <doc xml:space="preserve">a JSON string</doc>
5284 <type name="utf8" c:type="gconstpointer"/>
5286 <parameter name="b" transfer-ownership="none">
5287 <doc xml:space="preserve">another JSON string</doc>
5288 <type name="utf8" c:type="gconstpointer"/>
5292 <function name="string_equal"
5293 c:identifier="json_string_equal"
5295 <doc xml:space="preserve">Check whether @a and @b are equal UTF-8 JSON strings.</doc>
5296 <return-value transfer-ownership="none">
5297 <doc xml:space="preserve">%TRUE if @a and @b are equal; %FALSE otherwise</doc>
5298 <type name="gboolean" c:type="gboolean"/>
5301 <parameter name="a" transfer-ownership="none">
5302 <doc xml:space="preserve">a JSON string</doc>
5303 <type name="utf8" c:type="gconstpointer"/>
5305 <parameter name="b" transfer-ownership="none">
5306 <doc xml:space="preserve">another JSON string</doc>
5307 <type name="utf8" c:type="gconstpointer"/>
5311 <function name="string_hash" c:identifier="json_string_hash" version="1.2">
5312 <doc xml:space="preserve">Calculate a hash value for the given @key (a UTF-8 JSON string).
5314 Note: Member names are compared byte-wise, without applying any Unicode
5315 decomposition or normalisation. This is not explicitly mentioned in the JSON
5316 standard (ECMA-404), but is assumed.</doc>
5317 <return-value transfer-ownership="none">
5318 <doc xml:space="preserve">hash value for @key</doc>
5319 <type name="guint" c:type="guint"/>
5322 <parameter name="key" transfer-ownership="none">
5323 <doc xml:space="preserve">a JSON string to hash</doc>
5324 <type name="utf8" c:type="gconstpointer"/>
5328 <function name="to_string" c:identifier="json_to_string" version="1.2">
5329 <doc xml:space="preserve">Generates a stringified JSON representation of the contents of
5330 the passed @node.</doc>
5331 <return-value transfer-ownership="full">
5332 <doc xml:space="preserve">the string representation of the #JsonNode</doc>
5333 <type name="utf8" c:type="char*"/>
5336 <parameter name="node" transfer-ownership="none">
5337 <doc xml:space="preserve">a #JsonNode</doc>
5338 <type name="Node" c:type="JsonNode*"/>
5340 <parameter name="pretty" transfer-ownership="none">
5341 <doc xml:space="preserve">whether the output should be prettyfied for printing</doc>
5342 <type name="gboolean" c:type="gboolean"/>