xref: /NextBSD/contrib/jansson/doc/apiref.rst (revision 33da5adc555b3bc29986eeadca03829e4ad06b1e)
1.. _apiref:
2
3*************
4API Reference
5*************
6
7.. highlight:: c
8
9Preliminaries
10=============
11
12All declarations are in :file:`jansson.h`, so it's enough to
13
14::
15
16   #include <jansson.h>
17
18in each source file.
19
20All constants are prefixed with ``JSON_`` (except for those describing
21the library version, prefixed with ``JANSSON_``). Other identifiers
22are prefixed with ``json_``. Type names are suffixed with ``_t`` and
23``typedef``\ 'd so that the ``struct`` keyword need not be used.
24
25
26Library Version
27===============
28
29The Jansson version is of the form *A.B.C*, where *A* is the major
30version, *B* is the minor version and *C* is the micro version. If the
31micro version is zero, it's omitted from the version string, i.e. the
32version string is just *A.B*.
33
34When a new release only fixes bugs and doesn't add new features or
35functionality, the micro version is incremented. When new features are
36added in a backwards compatible way, the minor version is incremented
37and the micro version is set to zero. When there are backwards
38incompatible changes, the major version is incremented and others are
39set to zero.
40
41The following preprocessor constants specify the current version of
42the library:
43
44``JANSSON_MAJOR_VERSION``, ``JANSSON_MINOR_VERSION``, ``JANSSON_MICRO_VERSION``
45  Integers specifying the major, minor and micro versions,
46  respectively.
47
48``JANSSON_VERSION``
49  A string representation of the current version, e.g. ``"1.2.1"`` or
50  ``"1.3"``.
51
52``JANSSON_VERSION_HEX``
53  A 3-byte hexadecimal representation of the version, e.g.
54  ``0x010201`` for version 1.2.1 and ``0x010300`` for version 1.3.
55  This is useful in numeric comparisions, e.g.::
56
57      #if JANSSON_VERSION_HEX >= 0x010300
58      /* Code specific to version 1.3 and above */
59      #endif
60
61
62Value Representation
63====================
64
65The JSON specification (:rfc:`4627`) defines the following data types:
66*object*, *array*, *string*, *number*, *boolean*, and *null*. JSON
67types are used dynamically; arrays and objects can hold any other data
68type, including themselves. For this reason, Jansson's type system is
69also dynamic in nature. There's one C type to represent all JSON
70values, and this structure knows the type of the JSON value it holds.
71
72.. type:: json_t
73
74  This data structure is used throughout the library to represent all
75  JSON values. It always contains the type of the JSON value it holds
76  and the value's reference count. The rest depends on the type of the
77  value.
78
79Objects of :type:`json_t` are always used through a pointer. There
80are APIs for querying the type, manipulating the reference count, and
81for constructing and manipulating values of different types.
82
83Unless noted otherwise, all API functions return an error value if an
84error occurs. Depending on the function's signature, the error value
85is either *NULL* or -1. Invalid arguments or invalid input are
86apparent sources for errors. Memory allocation and I/O operations may
87also cause errors.
88
89
90Type
91----
92
93The type of a JSON value is queried and tested using the following
94functions:
95
96.. type:: enum json_type
97
98   The type of a JSON value. The following members are defined:
99
100   +--------------------+
101   | ``JSON_OBJECT``    |
102   +--------------------+
103   | ``JSON_ARRAY``     |
104   +--------------------+
105   | ``JSON_STRING``    |
106   +--------------------+
107   | ``JSON_INTEGER``   |
108   +--------------------+
109   | ``JSON_REAL``      |
110   +--------------------+
111   | ``JSON_TRUE``      |
112   +--------------------+
113   | ``JSON_FALSE``     |
114   +--------------------+
115   | ``JSON_NULL``      |
116   +--------------------+
117
118   These correspond to JSON object, array, string, number, boolean and
119   null. A number is represented by either a value of the type
120   ``JSON_INTEGER`` or of the type ``JSON_REAL``. A true boolean value
121   is represented by a value of the type ``JSON_TRUE`` and false by a
122   value of the type ``JSON_FALSE``.
123
124.. function:: int json_typeof(const json_t *json)
125
126   Return the type of the JSON value (a :type:`json_type` cast to
127   :type:`int`). *json* MUST NOT be *NULL*. This function is actually
128   implemented as a macro for speed.
129
130.. function:: json_is_object(const json_t *json)
131               json_is_array(const json_t *json)
132               json_is_string(const json_t *json)
133               json_is_integer(const json_t *json)
134               json_is_real(const json_t *json)
135               json_is_true(const json_t *json)
136               json_is_false(const json_t *json)
137               json_is_null(const json_t *json)
138
139   These functions (actually macros) return true (non-zero) for values
140   of the given type, and false (zero) for values of other types and
141   for *NULL*.
142
143.. function:: json_is_number(const json_t *json)
144
145   Returns true for values of types ``JSON_INTEGER`` and
146   ``JSON_REAL``, and false for other types and for *NULL*.
147
148.. function:: json_is_boolean(const json_t *json)
149
150   Returns true for types ``JSON_TRUE`` and ``JSON_FALSE``, and false
151   for values of other types and for *NULL*.
152
153.. function:: json_boolean_value(const json_t *json)
154
155   Alias of :func:`json_is_true()`, i.e. returns 1 for ``JSON_TRUE``
156   and 0 otherwise.
157
158   .. versionadded:: 2.7
159
160
161.. _apiref-reference-count:
162
163Reference Count
164---------------
165
166The reference count is used to track whether a value is still in use
167or not. When a value is created, it's reference count is set to 1. If
168a reference to a value is kept (e.g. a value is stored somewhere for
169later use), its reference count is incremented, and when the value is
170no longer needed, the reference count is decremented. When the
171reference count drops to zero, there are no references left, and the
172value can be destroyed.
173
174The following functions are used to manipulate the reference count.
175
176.. function:: json_t *json_incref(json_t *json)
177
178   Increment the reference count of *json* if it's not *NULL*.
179   Returns *json*.
180
181.. function:: void json_decref(json_t *json)
182
183   Decrement the reference count of *json*. As soon as a call to
184   :func:`json_decref()` drops the reference count to zero, the value
185   is destroyed and it can no longer be used.
186
187Functions creating new JSON values set the reference count to 1. These
188functions are said to return a **new reference**. Other functions
189returning (existing) JSON values do not normally increase the
190reference count. These functions are said to return a **borrowed
191reference**. So, if the user will hold a reference to a value returned
192as a borrowed reference, he must call :func:`json_incref`. As soon as
193the value is no longer needed, :func:`json_decref` should be called
194to release the reference.
195
196Normally, all functions accepting a JSON value as an argument will
197manage the reference, i.e. increase and decrease the reference count
198as needed. However, some functions **steal** the reference, i.e. they
199have the same result as if the user called :func:`json_decref()` on
200the argument right after calling the function. These functions are
201suffixed with ``_new`` or have ``_new_`` somewhere in their name.
202
203For example, the following code creates a new JSON array and appends
204an integer to it::
205
206  json_t *array, *integer;
207
208  array = json_array();
209  integer = json_integer(42);
210
211  json_array_append(array, integer);
212  json_decref(integer);
213
214Note how the caller has to release the reference to the integer value
215by calling :func:`json_decref()`. By using a reference stealing
216function :func:`json_array_append_new()` instead of
217:func:`json_array_append()`, the code becomes much simpler::
218
219  json_t *array = json_array();
220  json_array_append_new(array, json_integer(42));
221
222In this case, the user doesn't have to explicitly release the
223reference to the integer value, as :func:`json_array_append_new()`
224steals the reference when appending the value to the array.
225
226In the following sections it is clearly documented whether a function
227will return a new or borrowed reference or steal a reference to its
228argument.
229
230
231Circular References
232-------------------
233
234A circular reference is created when an object or an array is,
235directly or indirectly, inserted inside itself. The direct case is
236simple::
237
238  json_t *obj = json_object();
239  json_object_set(obj, "foo", obj);
240
241Jansson will refuse to do this, and :func:`json_object_set()` (and
242all the other such functions for objects and arrays) will return with
243an error status. The indirect case is the dangerous one::
244
245  json_t *arr1 = json_array(), *arr2 = json_array();
246  json_array_append(arr1, arr2);
247  json_array_append(arr2, arr1);
248
249In this example, the array ``arr2`` is contained in the array
250``arr1``, and vice versa. Jansson cannot check for this kind of
251indirect circular references without a performance hit, so it's up to
252the user to avoid them.
253
254If a circular reference is created, the memory consumed by the values
255cannot be freed by :func:`json_decref()`. The reference counts never
256drops to zero because the values are keeping the references to each
257other. Moreover, trying to encode the values with any of the encoding
258functions will fail. The encoder detects circular references and
259returns an error status.
260
261
262True, False and Null
263====================
264
265These three values are implemented as singletons, so the returned
266pointers won't change between invocations of these functions.
267
268.. function:: json_t *json_true(void)
269
270   .. refcounting:: new
271
272   Returns the JSON true value.
273
274.. function:: json_t *json_false(void)
275
276   .. refcounting:: new
277
278   Returns the JSON false value.
279
280.. function:: json_t *json_boolean(val)
281
282   .. refcounting:: new
283
284   Returns JSON false if ``val`` is zero, and JSON true otherwise.
285   This is a macro, and equivalent to ``val ? json_true() :
286   json_false()``.
287
288   .. versionadded:: 2.4
289
290
291.. function:: json_t *json_null(void)
292
293   .. refcounting:: new
294
295   Returns the JSON null value.
296
297
298String
299======
300
301Jansson uses UTF-8 as the character encoding. All JSON strings must be
302valid UTF-8 (or ASCII, as it's a subset of UTF-8). All Unicode
303codepoints U+0000 through U+10FFFF are allowed, but you must use
304length-aware functions if you wish to embed NUL bytes in strings.
305
306.. function:: json_t *json_string(const char *value)
307
308   .. refcounting:: new
309
310   Returns a new JSON string, or *NULL* on error. *value* must be a
311   valid null terminated UTF-8 encoded Unicode string.
312
313.. function:: json_t *json_stringn(const char *value, size_t len)
314
315   .. refcounting:: new
316
317   Like :func:`json_string`, but with explicit length, so *value* may
318   contain null characters or not be null terminated.
319
320.. function:: json_t *json_string_nocheck(const char *value)
321
322   .. refcounting:: new
323
324   Like :func:`json_string`, but doesn't check that *value* is valid
325   UTF-8. Use this function only if you are certain that this really
326   is the case (e.g. you have already checked it by other means).
327
328.. function:: json_t *json_stringn_nocheck(const char *value, size_t len)
329
330   .. refcounting:: new
331
332   Like :func:`json_string_nocheck`, but with explicit length, so
333   *value* may contain null characters or not be null terminated.
334
335.. function:: const char *json_string_value(const json_t *string)
336
337   Returns the associated value of *string* as a null terminated UTF-8
338   encoded string, or *NULL* if *string* is not a JSON string.
339
340   The retuned value is read-only and must not be modified or freed by
341   the user. It is valid as long as *string* exists, i.e. as long as
342   its reference count has not dropped to zero.
343
344.. function:: size_t json_string_length(const json_t *string)
345
346   Returns the length of *string* in its UTF-8 presentation, or zero
347   if *string* is not a JSON string.
348
349.. function:: int json_string_set(const json_t *string, const char *value)
350
351   Sets the associated value of *string* to *value*. *value* must be a
352   valid UTF-8 encoded Unicode string. Returns 0 on success and -1 on
353   error.
354
355.. function:: int json_string_setn(json_t *string, const char *value, size_t len)
356
357   Like :func:`json_string_set`, but with explicit length, so *value*
358   may contain null characters or not be null terminated.
359
360.. function:: int json_string_set_nocheck(const json_t *string, const char *value)
361
362   Like :func:`json_string_set`, but doesn't check that *value* is
363   valid UTF-8. Use this function only if you are certain that this
364   really is the case (e.g. you have already checked it by other
365   means).
366
367.. function:: int json_string_setn_nocheck(json_t *string, const char *value, size_t len)
368
369   Like :func:`json_string_set_nocheck`, but with explicit length,
370   so *value* may contain null characters or not be null terminated.
371
372
373Number
374======
375
376The JSON specification only contains one numeric type, "number". The C
377programming language has distinct types for integer and floating-point
378numbers, so for practical reasons Jansson also has distinct types for
379the two. They are called "integer" and "real", respectively. For more
380information, see :ref:`rfc-conformance`.
381
382.. type:: json_int_t
383
384   This is the C type that is used to store JSON integer values. It
385   represents the widest integer type available on your system. In
386   practice it's just a typedef of ``long long`` if your compiler
387   supports it, otherwise ``long``.
388
389   Usually, you can safely use plain ``int`` in place of
390   ``json_int_t``, and the implicit C integer conversion handles the
391   rest. Only when you know that you need the full 64-bit range, you
392   should use ``json_int_t`` explicitly.
393
394``JSON_INTEGER_IS_LONG_LONG``
395   This is a preprocessor variable that holds the value 1 if
396   :type:`json_int_t` is ``long long``, and 0 if it's ``long``. It
397   can be used as follows::
398
399       #if JSON_INTEGER_IS_LONG_LONG
400       /* Code specific for long long */
401       #else
402       /* Code specific for long */
403       #endif
404
405``JSON_INTEGER_FORMAT``
406   This is a macro that expands to a :func:`printf()` conversion
407   specifier that corresponds to :type:`json_int_t`, without the
408   leading ``%`` sign, i.e. either ``"lld"`` or ``"ld"``. This macro
409   is required because the actual type of :type:`json_int_t` can be
410   either ``long`` or ``long long``, and :func:`printf()` reuiqres
411   different length modifiers for the two.
412
413   Example::
414
415       json_int_t x = 123123123;
416       printf("x is %" JSON_INTEGER_FORMAT "\n", x);
417
418
419.. function:: json_t *json_integer(json_int_t value)
420
421   .. refcounting:: new
422
423   Returns a new JSON integer, or *NULL* on error.
424
425.. function:: json_int_t json_integer_value(const json_t *integer)
426
427   Returns the associated value of *integer*, or 0 if *json* is not a
428   JSON integer.
429
430.. function:: int json_integer_set(const json_t *integer, json_int_t value)
431
432   Sets the associated value of *integer* to *value*. Returns 0 on
433   success and -1 if *integer* is not a JSON integer.
434
435.. function:: json_t *json_real(double value)
436
437   .. refcounting:: new
438
439   Returns a new JSON real, or *NULL* on error.
440
441.. function:: double json_real_value(const json_t *real)
442
443   Returns the associated value of *real*, or 0.0 if *real* is not a
444   JSON real.
445
446.. function:: int json_real_set(const json_t *real, double value)
447
448   Sets the associated value of *real* to *value*. Returns 0 on
449   success and -1 if *real* is not a JSON real.
450
451In addition to the functions above, there's a common query function
452for integers and reals:
453
454.. function:: double json_number_value(const json_t *json)
455
456   Returns the associated value of the JSON integer or JSON real
457   *json*, cast to double regardless of the actual type. If *json* is
458   neither JSON real nor JSON integer, 0.0 is returned.
459
460
461Array
462=====
463
464A JSON array is an ordered collection of other JSON values.
465
466.. function:: json_t *json_array(void)
467
468   .. refcounting:: new
469
470   Returns a new JSON array, or *NULL* on error. Initially, the array
471   is empty.
472
473.. function:: size_t json_array_size(const json_t *array)
474
475   Returns the number of elements in *array*, or 0 if *array* is NULL
476   or not a JSON array.
477
478.. function:: json_t *json_array_get(const json_t *array, size_t index)
479
480   .. refcounting:: borrow
481
482   Returns the element in *array* at position *index*. The valid range
483   for *index* is from 0 to the return value of
484   :func:`json_array_size()` minus 1. If *array* is not a JSON array,
485   if *array* is *NULL*, or if *index* is out of range, *NULL* is
486   returned.
487
488.. function:: int json_array_set(json_t *array, size_t index, json_t *value)
489
490   Replaces the element in *array* at position *index* with *value*.
491   The valid range for *index* is from 0 to the return value of
492   :func:`json_array_size()` minus 1. Returns 0 on success and -1 on
493   error.
494
495.. function:: int json_array_set_new(json_t *array, size_t index, json_t *value)
496
497   Like :func:`json_array_set()` but steals the reference to *value*.
498   This is useful when *value* is newly created and not used after
499   the call.
500
501.. function:: int json_array_append(json_t *array, json_t *value)
502
503   Appends *value* to the end of *array*, growing the size of *array*
504   by 1. Returns 0 on success and -1 on error.
505
506.. function:: int json_array_append_new(json_t *array, json_t *value)
507
508   Like :func:`json_array_append()` but steals the reference to
509   *value*. This is useful when *value* is newly created and not used
510   after the call.
511
512.. function:: int json_array_insert(json_t *array, size_t index, json_t *value)
513
514   Inserts *value* to *array* at position *index*, shifting the
515   elements at *index* and after it one position towards the end of
516   the array. Returns 0 on success and -1 on error.
517
518.. function:: int json_array_insert_new(json_t *array, size_t index, json_t *value)
519
520   Like :func:`json_array_insert()` but steals the reference to
521   *value*. This is useful when *value* is newly created and not used
522   after the call.
523
524.. function:: int json_array_remove(json_t *array, size_t index)
525
526   Removes the element in *array* at position *index*, shifting the
527   elements after *index* one position towards the start of the array.
528   Returns 0 on success and -1 on error. The reference count of the
529   removed value is decremented.
530
531.. function:: int json_array_clear(json_t *array)
532
533   Removes all elements from *array*. Returns 0 on sucess and -1 on
534   error. The reference count of all removed values are decremented.
535
536.. function:: int json_array_extend(json_t *array, json_t *other_array)
537
538   Appends all elements in *other_array* to the end of *array*.
539   Returns 0 on success and -1 on error.
540
541The following macro can be used to iterate through all elements
542in an array.
543
544.. function:: json_array_foreach(array, index, value)
545
546   Iterate over every element of ``array``, running the block
547   of code that follows each time with the proper values set to
548   variables ``index`` and ``value``, of types :type:`size_t` and
549   :type:`json_t *` respectively. Example::
550
551       /* array is a JSON array */
552       size_t index;
553       json_t *value;
554
555       json_array_foreach(array, index, value) {
556           /* block of code that uses index and value */
557       }
558
559   The items are returned in increasing index order.
560
561   This macro expands to an ordinary ``for`` statement upon
562   preprocessing, so its performance is equivalent to that of
563   hand-written code using the array access functions.
564   The main advantage of this macro is that it abstracts
565   away the complexity, and makes for shorter, more
566   concise code.
567
568   .. versionadded:: 2.5
569
570
571Object
572======
573
574A JSON object is a dictionary of key-value pairs, where the key is a
575Unicode string and the value is any JSON value.
576
577Even though NUL bytes are allowed in string values, they are not
578allowed in object keys.
579
580.. function:: json_t *json_object(void)
581
582   .. refcounting:: new
583
584   Returns a new JSON object, or *NULL* on error. Initially, the
585   object is empty.
586
587.. function:: size_t json_object_size(const json_t *object)
588
589   Returns the number of elements in *object*, or 0 if *object* is not
590   a JSON object.
591
592.. function:: json_t *json_object_get(const json_t *object, const char *key)
593
594   .. refcounting:: borrow
595
596   Get a value corresponding to *key* from *object*. Returns *NULL* if
597   *key* is not found and on error.
598
599.. function:: int json_object_set(json_t *object, const char *key, json_t *value)
600
601   Set the value of *key* to *value* in *object*. *key* must be a
602   valid null terminated UTF-8 encoded Unicode string. If there
603   already is a value for *key*, it is replaced by the new value.
604   Returns 0 on success and -1 on error.
605
606.. function:: int json_object_set_nocheck(json_t *object, const char *key, json_t *value)
607
608   Like :func:`json_object_set`, but doesn't check that *key* is
609   valid UTF-8. Use this function only if you are certain that this
610   really is the case (e.g. you have already checked it by other
611   means).
612
613.. function:: int json_object_set_new(json_t *object, const char *key, json_t *value)
614
615   Like :func:`json_object_set()` but steals the reference to
616   *value*. This is useful when *value* is newly created and not used
617   after the call.
618
619.. function:: int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value)
620
621   Like :func:`json_object_set_new`, but doesn't check that *key* is
622   valid UTF-8. Use this function only if you are certain that this
623   really is the case (e.g. you have already checked it by other
624   means).
625
626.. function:: int json_object_del(json_t *object, const char *key)
627
628   Delete *key* from *object* if it exists. Returns 0 on success, or
629   -1 if *key* was not found. The reference count of the removed value
630   is decremented.
631
632.. function:: int json_object_clear(json_t *object)
633
634   Remove all elements from *object*. Returns 0 on success and -1 if
635   *object* is not a JSON object. The reference count of all removed
636   values are decremented.
637
638.. function:: int json_object_update(json_t *object, json_t *other)
639
640   Update *object* with the key-value pairs from *other*, overwriting
641   existing keys. Returns 0 on success or -1 on error.
642
643.. function:: int json_object_update_existing(json_t *object, json_t *other)
644
645   Like :func:`json_object_update()`, but only the values of existing
646   keys are updated. No new keys are created. Returns 0 on success or
647   -1 on error.
648
649   .. versionadded:: 2.3
650
651.. function:: int json_object_update_missing(json_t *object, json_t *other)
652
653   Like :func:`json_object_update()`, but only new keys are created.
654   The value of any existing key is not changed. Returns 0 on success
655   or -1 on error.
656
657   .. versionadded:: 2.3
658
659The following macro can be used to iterate through all key-value pairs
660in an object.
661
662.. function:: json_object_foreach(object, key, value)
663
664   Iterate over every key-value pair of ``object``, running the block
665   of code that follows each time with the proper values set to
666   variables ``key`` and ``value``, of types :type:`const char *` and
667   :type:`json_t *` respectively. Example::
668
669       /* obj is a JSON object */
670       const char *key;
671       json_t *value;
672
673       json_object_foreach(obj, key, value) {
674           /* block of code that uses key and value */
675       }
676
677   The items are not returned in any particular order.
678
679   This macro expands to an ordinary ``for`` statement upon
680   preprocessing, so its performance is equivalent to that of
681   hand-written iteration code using the object iteration protocol
682   (see below). The main advantage of this macro is that it abstracts
683   away the complexity behind iteration, and makes for shorter, more
684   concise code.
685
686   .. versionadded:: 2.3
687
688
689The following functions implement an iteration protocol for objects,
690allowing to iterate through all key-value pairs in an object. The
691items are not returned in any particular order, as this would require
692sorting due to the internal hashtable implementation.
693
694.. function:: void *json_object_iter(json_t *object)
695
696   Returns an opaque iterator which can be used to iterate over all
697   key-value pairs in *object*, or *NULL* if *object* is empty.
698
699.. function:: void *json_object_iter_at(json_t *object, const char *key)
700
701   Like :func:`json_object_iter()`, but returns an iterator to the
702   key-value pair in *object* whose key is equal to *key*, or NULL if
703   *key* is not found in *object*. Iterating forward to the end of
704   *object* only yields all key-value pairs of the object if *key*
705   happens to be the first key in the underlying hash table.
706
707.. function:: void *json_object_iter_next(json_t *object, void *iter)
708
709   Returns an iterator pointing to the next key-value pair in *object*
710   after *iter*, or *NULL* if the whole object has been iterated
711   through.
712
713.. function:: const char *json_object_iter_key(void *iter)
714
715   Extract the associated key from *iter*.
716
717.. function:: json_t *json_object_iter_value(void *iter)
718
719   .. refcounting:: borrow
720
721   Extract the associated value from *iter*.
722
723.. function:: int json_object_iter_set(json_t *object, void *iter, json_t *value)
724
725   Set the value of the key-value pair in *object*, that is pointed to
726   by *iter*, to *value*.
727
728.. function:: int json_object_iter_set_new(json_t *object, void *iter, json_t *value)
729
730   Like :func:`json_object_iter_set()`, but steals the reference to
731   *value*. This is useful when *value* is newly created and not used
732   after the call.
733
734.. function:: void *json_object_key_to_iter(const char *key)
735
736   Like :func:`json_object_iter_at()`, but much faster. Only works for
737   values returned by :func:`json_object_iter_key()`. Using other keys
738   will lead to segfaults. This function is used internally to
739   implement :func:`json_object_foreach`.
740
741   .. versionadded:: 2.3
742
743The iteration protocol can be used for example as follows::
744
745   /* obj is a JSON object */
746   const char *key;
747   json_t *value;
748
749   void *iter = json_object_iter(obj);
750   while(iter)
751   {
752       key = json_object_iter_key(iter);
753       value = json_object_iter_value(iter);
754       /* use key and value ... */
755       iter = json_object_iter_next(obj, iter);
756   }
757
758.. function:: void json_object_seed(size_t seed)
759
760    Seed the hash function used in Jansson's hashtable implementation.
761    The seed is used to randomize the hash function so that an
762    attacker cannot control its output.
763
764    If *seed* is 0, Jansson generates the seed itselfy by reading
765    random data from the operating system's entropy sources. If no
766    entropy sources are available, falls back to using a combination
767    of the current timestamp (with microsecond precision if possible)
768    and the process ID.
769
770    If called at all, this function must be called before any calls to
771    :func:`json_object()`, either explicit or implicit. If this
772    function is not called by the user, the first call to
773    :func:`json_object()` (either explicit or implicit) seeds the hash
774    function. See :ref:`portability-thread-safety` for notes on thread
775    safety.
776
777    If repeatable results are required, for e.g. unit tests, the hash
778    function can be "unrandomized" by calling :func:`json_object_seed`
779    with a constant value on program startup, e.g.
780    ``json_object_seed(1)``.
781
782    .. versionadded:: 2.6
783
784
785Error reporting
786===============
787
788Jansson uses a single struct type to pass error information to the
789user. See sections :ref:`apiref-decoding`, :ref:`apiref-pack` and
790:ref:`apiref-unpack` for functions that pass error information using
791this struct.
792
793.. type:: json_error_t
794
795   .. member:: char text[]
796
797      The error message (in UTF-8), or an empty string if a message is
798      not available.
799
800   .. member:: char source[]
801
802      Source of the error. This can be (a part of) the file name or a
803      special identifier in angle brackers (e.g. ``<string>``).
804
805   .. member:: int line
806
807      The line number on which the error occurred.
808
809   .. member:: int column
810
811      The column on which the error occurred. Note that this is the
812      *character column*, not the byte column, i.e. a multibyte UTF-8
813      character counts as one column.
814
815   .. member:: size_t position
816
817      The position in bytes from the start of the input. This is
818      useful for debugging Unicode encoding problems.
819
820The normal use of :type:`json_error_t` is to allocate it on the stack,
821and pass a pointer to a function. Example::
822
823   int main() {
824       json_t *json;
825       json_error_t error;
826
827       json = json_load_file("/path/to/file.json", 0, &error);
828       if(!json) {
829           /* the error variable contains error information */
830       }
831       ...
832   }
833
834Also note that if the call succeeded (``json != NULL`` in the above
835example), the contents of ``error`` are generally left unspecified.
836The decoding functions write to the ``position`` member also on
837success. See :ref:`apiref-decoding` for more info.
838
839All functions also accept *NULL* as the :type:`json_error_t` pointer,
840in which case no error information is returned to the caller.
841
842
843Encoding
844========
845
846This sections describes the functions that can be used to encode
847values to JSON. By default, only objects and arrays can be encoded
848directly, since they are the only valid *root* values of a JSON text.
849To encode any JSON value, use the ``JSON_ENCODE_ANY`` flag (see
850below).
851
852By default, the output has no newlines, and spaces are used between
853array and object elements for a readable output. This behavior can be
854altered by using the ``JSON_INDENT`` and ``JSON_COMPACT`` flags
855described below. A newline is never appended to the end of the encoded
856JSON data.
857
858Each function takes a *flags* parameter that controls some aspects of
859how the data is encoded. Its default value is 0. The following macros
860can be ORed together to obtain *flags*.
861
862``JSON_INDENT(n)``
863   Pretty-print the result, using newlines between array and object
864   items, and indenting with *n* spaces. The valid range for *n* is
865   between 0 and 31 (inclusive), other values result in an undefined
866   output. If ``JSON_INDENT`` is not used or *n* is 0, no newlines are
867   inserted between array and object items.
868
869   The ``JSON_MAX_INDENT`` constant defines the maximum indentation
870   that can be used, and its value is 31.
871
872   .. versionchanged:: 2.7
873      Added ``JSON_MAX_INDENT``.
874
875``JSON_COMPACT``
876   This flag enables a compact representation, i.e. sets the separator
877   between array and object items to ``","`` and between object keys
878   and values to ``":"``. Without this flag, the corresponding
879   separators are ``", "`` and ``": "`` for more readable output.
880
881``JSON_ENSURE_ASCII``
882   If this flag is used, the output is guaranteed to consist only of
883   ASCII characters. This is achived by escaping all Unicode
884   characters outside the ASCII range.
885
886``JSON_SORT_KEYS``
887   If this flag is used, all the objects in output are sorted by key.
888   This is useful e.g. if two JSON texts are diffed or visually
889   compared.
890
891``JSON_PRESERVE_ORDER``
892   If this flag is used, object keys in the output are sorted into the
893   same order in which they were first inserted to the object. For
894   example, decoding a JSON text and then encoding with this flag
895   preserves the order of object keys.
896
897``JSON_ENCODE_ANY``
898   Specifying this flag makes it possible to encode any JSON value on
899   its own. Without it, only objects and arrays can be passed as the
900   *root* value to the encoding functions.
901
902   **Note:** Encoding any value may be useful in some scenarios, but
903   it's generally discouraged as it violates strict compatiblity with
904   :rfc:`4627`. If you use this flag, don't expect interoperatibility
905   with other JSON systems.
906
907   .. versionadded:: 2.1
908
909``JSON_ESCAPE_SLASH``
910   Escape the ``/`` characters in strings with ``\/``.
911
912   .. versionadded:: 2.4
913
914``JSON_REAL_PRECISION(n)``
915   Output all real numbers with at most *n* digits of precision. The
916   valid range for *n* is between 0 and 31 (inclusive), and other
917   values result in an undefined behavior.
918
919   By default, the precision is 17, to correctly and losslessly encode
920   all IEEE 754 double precision floating point numbers.
921
922   .. versionadded:: 2.7
923
924The following functions perform the actual JSON encoding. The result
925is in UTF-8.
926
927.. function:: char *json_dumps(const json_t *root, size_t flags)
928
929   Returns the JSON representation of *root* as a string, or *NULL* on
930   error. *flags* is described above. The return value must be freed
931   by the caller using :func:`free()`.
932
933.. function:: int json_dumpf(const json_t *root, FILE *output, size_t flags)
934
935   Write the JSON representation of *root* to the stream *output*.
936   *flags* is described above. Returns 0 on success and -1 on error.
937   If an error occurs, something may have already been written to
938   *output*. In this case, the output is undefined and most likely not
939   valid JSON.
940
941.. function:: int json_dump_file(const json_t *json, const char *path, size_t flags)
942
943   Write the JSON representation of *root* to the file *path*. If
944   *path* already exists, it is overwritten. *flags* is described
945   above. Returns 0 on success and -1 on error.
946
947.. type:: json_dump_callback_t
948
949   A typedef for a function that's called by
950   :func:`json_dump_callback()`::
951
952       typedef int (*json_dump_callback_t)(const char *buffer, size_t size, void *data);
953
954   *buffer* points to a buffer containing a chunk of output, *size* is
955   the length of the buffer, and *data* is the corresponding
956   :func:`json_dump_callback()` argument passed through.
957
958   On error, the function should return -1 to stop the encoding
959   process. On success, it should return 0.
960
961   .. versionadded:: 2.2
962
963.. function:: int json_dump_callback(const json_t *json, json_dump_callback_t callback, void *data, size_t flags)
964
965   Call *callback* repeatedly, passing a chunk of the JSON
966   representation of *root* each time. *flags* is described above.
967   Returns 0 on success and -1 on error.
968
969   .. versionadded:: 2.2
970
971
972.. _apiref-decoding:
973
974Decoding
975========
976
977This sections describes the functions that can be used to decode JSON
978text to the Jansson representation of JSON data. The JSON
979specification requires that a JSON text is either a serialized array
980or object, and this requirement is also enforced with the following
981functions. In other words, the top level value in the JSON text being
982decoded must be either array or object. To decode any JSON value, use
983the ``JSON_DECODE_ANY`` flag (see below).
984
985See :ref:`rfc-conformance` for a discussion on Jansson's conformance
986to the JSON specification. It explains many design decisions that
987affect especially the behavior of the decoder.
988
989Each function takes a *flags* parameter that can be used to control
990the behavior of the decoder. Its default value is 0. The following
991macros can be ORed together to obtain *flags*.
992
993``JSON_REJECT_DUPLICATES``
994   Issue a decoding error if any JSON object in the input text
995   contains duplicate keys. Without this flag, the value of the last
996   occurence of each key ends up in the result. Key equivalence is
997   checked byte-by-byte, without special Unicode comparison
998   algorithms.
999
1000   .. versionadded:: 2.1
1001
1002``JSON_DECODE_ANY``
1003   By default, the decoder expects an array or object as the input.
1004   With this flag enabled, the decoder accepts any valid JSON value.
1005
1006   **Note:** Decoding any value may be useful in some scenarios, but
1007   it's generally discouraged as it violates strict compatiblity with
1008   :rfc:`4627`. If you use this flag, don't expect interoperatibility
1009   with other JSON systems.
1010
1011   .. versionadded:: 2.3
1012
1013``JSON_DISABLE_EOF_CHECK``
1014   By default, the decoder expects that its whole input constitutes a
1015   valid JSON text, and issues an error if there's extra data after
1016   the otherwise valid JSON input. With this flag enabled, the decoder
1017   stops after decoding a valid JSON array or object, and thus allows
1018   extra data after the JSON text.
1019
1020   Normally, reading will stop when the last ``]`` or ``}`` in the
1021   JSON input is encountered. If both ``JSON_DISABLE_EOF_CHECK`` and
1022   ``JSON_DECODE_ANY`` flags are used, the decoder may read one extra
1023   UTF-8 code unit (up to 4 bytes of input). For example, decoding
1024   ``4true`` correctly decodes the integer 4, but also reads the
1025   ``t``. For this reason, if reading multiple consecutive values that
1026   are not arrays or objects, they should be separated by at least one
1027   whitespace character.
1028
1029   .. versionadded:: 2.1
1030
1031``JSON_DECODE_INT_AS_REAL``
1032   JSON defines only one number type. Jansson distinguishes between
1033   ints and reals. For more information see :ref:`real-vs-integer`.
1034   With this flag enabled the decoder interprets all numbers as real
1035   values. Integers that do not have an exact double representation
1036   will silently result in a loss of precision. Integers that cause
1037   a double overflow will cause an error.
1038
1039   .. versionadded:: 2.5
1040
1041``JSON_ALLOW_NUL``
1042   Allow ``\u0000`` escape inside string values. This is a safety
1043   measure; If you know your input can contain NUL bytes, use this
1044   flag. If you don't use this flag, you don't have to worry about NUL
1045   bytes inside strings unless you explicitly create themselves by
1046   using e.g. :func:`json_stringn()` or ``s#`` format specifier for
1047   :func:`json_pack()`.
1048
1049   Object keys cannot have embedded NUL bytes even if this flag is
1050   used.
1051
1052   .. versionadded:: 2.6
1053
1054Each function also takes an optional :type:`json_error_t` parameter
1055that is filled with error information if decoding fails. It's also
1056updated on success; the number of bytes of input read is written to
1057its ``position`` field. This is especially useful when using
1058``JSON_DISABLE_EOF_CHECK`` to read multiple consecutive JSON texts.
1059
1060.. versionadded:: 2.3
1061   Number of bytes of input read is written to the ``position`` field
1062   of the :type:`json_error_t` structure.
1063
1064If no error or position information is needed, you can pass *NULL*.
1065
1066The following functions perform the actual JSON decoding.
1067
1068.. function:: json_t *json_loads(const char *input, size_t flags, json_error_t *error)
1069
1070   .. refcounting:: new
1071
1072   Decodes the JSON string *input* and returns the array or object it
1073   contains, or *NULL* on error, in which case *error* is filled with
1074   information about the error. *flags* is described above.
1075
1076.. function:: json_t *json_loadb(const char *buffer, size_t buflen, size_t flags, json_error_t *error)
1077
1078   .. refcounting:: new
1079
1080   Decodes the JSON string *buffer*, whose length is *buflen*, and
1081   returns the array or object it contains, or *NULL* on error, in
1082   which case *error* is filled with information about the error. This
1083   is similar to :func:`json_loads()` except that the string doesn't
1084   need to be null-terminated. *flags* is described above.
1085
1086   .. versionadded:: 2.1
1087
1088.. function:: json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
1089
1090   .. refcounting:: new
1091
1092   Decodes the JSON text in stream *input* and returns the array or
1093   object it contains, or *NULL* on error, in which case *error* is
1094   filled with information about the error. *flags* is described
1095   above.
1096
1097   This function will start reading the input from whatever position
1098   the input file was, without attempting to seek first. If an error
1099   occurs, the file position will be left indeterminate. On success,
1100   the file position will be at EOF, unless ``JSON_DISABLE_EOF_CHECK``
1101   flag was used. In this case, the file position will be at the first
1102   character after the last ``]`` or ``}`` in the JSON input. This
1103   allows calling :func:`json_loadf()` on the same ``FILE`` object
1104   multiple times, if the input consists of consecutive JSON texts,
1105   possibly separated by whitespace.
1106
1107.. function:: json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
1108
1109   .. refcounting:: new
1110
1111   Decodes the JSON text in file *path* and returns the array or
1112   object it contains, or *NULL* on error, in which case *error* is
1113   filled with information about the error. *flags* is described
1114   above.
1115
1116.. type:: json_load_callback_t
1117
1118   A typedef for a function that's called by
1119   :func:`json_load_callback()` to read a chunk of input data::
1120
1121       typedef size_t (*json_load_callback_t)(void *buffer, size_t buflen, void *data);
1122
1123   *buffer* points to a buffer of *buflen* bytes, and *data* is the
1124   corresponding :func:`json_load_callback()` argument passed through.
1125
1126   On success, the function should return the number of bytes read; a
1127   returned value of 0 indicates that no data was read and that the
1128   end of file has been reached. On error, the function should return
1129   ``(size_t)-1`` to abort the decoding process.
1130
1131   .. versionadded:: 2.4
1132
1133.. function:: json_t *json_load_callback(json_load_callback_t callback, void *data, size_t flags, json_error_t *error)
1134
1135   .. refcounting:: new
1136
1137   Decodes the JSON text produced by repeated calls to *callback*, and
1138   returns the array or object it contains, or *NULL* on error, in
1139   which case *error* is filled with information about the error.
1140   *data* is passed through to *callback* on each call. *flags* is
1141   described above.
1142
1143   .. versionadded:: 2.4
1144
1145
1146.. _apiref-pack:
1147
1148Building Values
1149===============
1150
1151This section describes functions that help to create, or *pack*,
1152complex JSON values, especially nested objects and arrays. Value
1153building is based on a *format string* that is used to tell the
1154functions about the expected arguments.
1155
1156For example, the format string ``"i"`` specifies a single integer
1157value, while the format string ``"[ssb]"`` or the equivalent ``"[s, s,
1158b]"`` specifies an array value with two strings and a boolean as its
1159items::
1160
1161    /* Create the JSON integer 42 */
1162    json_pack("i", 42);
1163
1164    /* Create the JSON array ["foo", "bar", true] */
1165    json_pack("[ssb]", "foo", "bar", 1);
1166
1167Here's the full list of format specifiers. The type in parentheses
1168denotes the resulting JSON type, and the type in brackets (if any)
1169denotes the C type that is expected as the corresponding argument or
1170arguments.
1171
1172``s`` (string) [const char \*]
1173    Convert a NULL terminated UTF-8 string to a JSON string.
1174
1175``s#`` (string) [const char \*, int]
1176    Convert a UTF-8 buffer of a given length to a JSON string.
1177
1178    .. versionadded:: 2.5
1179
1180``s%`` (string) [const char \*, size_t]
1181    Like ``s#`` but the length argument is of type :type:`size_t`.
1182
1183    .. versionadded:: 2.6
1184
1185``+`` [const char \*]
1186    Like ``s``, but concatenate to the previous string. Only valid
1187    after ``s``, ``s#``, ``+`` or ``+#``.
1188
1189    .. versionadded:: 2.5
1190
1191``+#`` [const char \*, int]
1192    Like ``s#``, but concatenate to the previous string. Only valid
1193    after ``s``, ``s#``, ``+`` or ``+#``.
1194
1195    .. versionadded:: 2.5
1196
1197``+%`` (string) [const char \*, size_t]
1198    Like ``+#`` but the length argument is of type :type:`size_t`.
1199
1200    .. versionadded:: 2.6
1201
1202``n`` (null)
1203    Output a JSON null value. No argument is consumed.
1204
1205``b`` (boolean) [int]
1206    Convert a C :type:`int` to JSON boolean value. Zero is converted
1207    to ``false`` and non-zero to ``true``.
1208
1209``i`` (integer) [int]
1210    Convert a C :type:`int` to JSON integer.
1211
1212``I`` (integer) [json_int_t]
1213    Convert a C :type:`json_int_t` to JSON integer.
1214
1215``f`` (real) [double]
1216    Convert a C :type:`double` to JSON real.
1217
1218``o`` (any value) [json_t \*]
1219    Output any given JSON value as-is. If the value is added to an
1220    array or object, the reference to the value passed to ``o`` is
1221    stolen by the container.
1222
1223``O`` (any value) [json_t \*]
1224    Like ``o``, but the argument's reference count is incremented.
1225    This is useful if you pack into an array or object and want to
1226    keep the reference for the JSON value consumed by ``O`` to
1227    yourself.
1228
1229``[fmt]`` (array)
1230    Build an array with contents from the inner format string. ``fmt``
1231    may contain objects and arrays, i.e. recursive value building is
1232    supported.
1233
1234``{fmt}`` (object)
1235    Build an object with contents from the inner format string
1236    ``fmt``. The first, third, etc. format specifier represent a key,
1237    and must be a string (see ``s``, ``s#``, ``+`` and ``+#`` above),
1238    as object keys are always strings. The second, fourth, etc. format
1239    specifier represent a value. Any value may be an object or array,
1240    i.e. recursive value building is supported.
1241
1242Whitespace, ``:`` and ``,`` are ignored.
1243
1244The following functions compose the value building API:
1245
1246.. function:: json_t *json_pack(const char *fmt, ...)
1247
1248   .. refcounting:: new
1249
1250   Build a new JSON value according to the format string *fmt*. For
1251   each format specifier (except for ``{}[]n``), one or more arguments
1252   are consumed and used to build the corresponding value. Returns
1253   *NULL* on error.
1254
1255.. function:: json_t *json_pack_ex(json_error_t *error, size_t flags, const char *fmt, ...)
1256              json_t *json_vpack_ex(json_error_t *error, size_t flags, const char *fmt, va_list ap)
1257
1258   .. refcounting:: new
1259
1260   Like :func:`json_pack()`, but an in the case of an error, an error
1261   message is written to *error*, if it's not *NULL*. The *flags*
1262   parameter is currently unused and should be set to 0.
1263
1264   As only the errors in format string (and out-of-memory errors) can
1265   be caught by the packer, these two functions are most likely only
1266   useful for debugging format strings.
1267
1268More examples::
1269
1270  /* Build an empty JSON object */
1271  json_pack("{}");
1272
1273  /* Build the JSON object {"foo": 42, "bar": 7} */
1274  json_pack("{sisi}", "foo", 42, "bar", 7);
1275
1276  /* Like above, ':', ',' and whitespace are ignored */
1277  json_pack("{s:i, s:i}", "foo", 42, "bar", 7);
1278
1279  /* Build the JSON array [[1, 2], {"cool": true}] */
1280  json_pack("[[i,i],{s:b}]", 1, 2, "cool", 1);
1281
1282  /* Build a string from a non-NUL terminated buffer */
1283  char buffer[4] = {'t', 'e', 's', 't'};
1284  json_pack("s#", buffer, 4);
1285
1286  /* Concatentate strings together to build the JSON string "foobarbaz" */
1287  json_pack("s++", "foo", "bar", "baz");
1288
1289
1290.. _apiref-unpack:
1291
1292Parsing and Validating Values
1293=============================
1294
1295This section describes functions that help to validate complex values
1296and extract, or *unpack*, data from them. Like :ref:`building values
1297<apiref-pack>`, this is also based on format strings.
1298
1299While a JSON value is unpacked, the type specified in the format
1300string is checked to match that of the JSON value. This is the
1301validation part of the process. In addition to this, the unpacking
1302functions can also check that all items of arrays and objects are
1303unpacked. This check be enabled with the format specifier ``!`` or by
1304using the flag ``JSON_STRICT``. See below for details.
1305
1306Here's the full list of format specifiers. The type in parentheses
1307denotes the JSON type, and the type in brackets (if any) denotes the C
1308type whose address should be passed.
1309
1310``s`` (string) [const char \*]
1311    Convert a JSON string to a pointer to a NULL terminated UTF-8
1312    string. The resulting string is extracted by using
1313    :func:`json_string_value()` internally, so it exists as long as
1314    there are still references to the corresponding JSON string.
1315
1316``s%`` (string) [const char \*, size_t \*]
1317    Convert a JSON string to a pointer to a NULL terminated UTF-8
1318    string and its length.
1319
1320    .. versionadded:: 2.6
1321
1322``n`` (null)
1323    Expect a JSON null value. Nothing is extracted.
1324
1325``b`` (boolean) [int]
1326    Convert a JSON boolean value to a C :type:`int`, so that ``true``
1327    is converted to 1 and ``false`` to 0.
1328
1329``i`` (integer) [int]
1330    Convert a JSON integer to C :type:`int`.
1331
1332``I`` (integer) [json_int_t]
1333    Convert a JSON integer to C :type:`json_int_t`.
1334
1335``f`` (real) [double]
1336    Convert a JSON real to C :type:`double`.
1337
1338``F`` (integer or real) [double]
1339    Convert a JSON number (integer or real) to C :type:`double`.
1340
1341``o`` (any value) [json_t \*]
1342    Store a JSON value with no conversion to a :type:`json_t` pointer.
1343
1344``O`` (any value) [json_t \*]
1345    Like ``O``, but the JSON value's reference count is incremented.
1346
1347``[fmt]`` (array)
1348    Convert each item in the JSON array according to the inner format
1349    string. ``fmt`` may contain objects and arrays, i.e. recursive
1350    value extraction is supporetd.
1351
1352``{fmt}`` (object)
1353    Convert each item in the JSON object according to the inner format
1354    string ``fmt``. The first, third, etc. format specifier represent
1355    a key, and must be ``s``. The corresponding argument to unpack
1356    functions is read as the object key. The second fourth, etc.
1357    format specifier represent a value and is written to the address
1358    given as the corresponding argument. **Note** that every other
1359    argument is read from and every other is written to.
1360
1361    ``fmt`` may contain objects and arrays as values, i.e. recursive
1362    value extraction is supporetd.
1363
1364    .. versionadded:: 2.3
1365       Any ``s`` representing a key may be suffixed with a ``?`` to
1366       make the key optional. If the key is not found, nothing is
1367       extracted. See below for an example.
1368
1369``!``
1370    This special format specifier is used to enable the check that
1371    all object and array items are accessed, on a per-value basis. It
1372    must appear inside an array or object as the last format specifier
1373    before the closing bracket or brace. To enable the check globally,
1374    use the ``JSON_STRICT`` unpacking flag.
1375
1376``*``
1377    This special format specifier is the opposite of ``!``. If the
1378    ``JSON_STRICT`` flag is used, ``*`` can be used to disable the
1379    strict check on a per-value basis. It must appear inside an array
1380    or object as the last format specifier before the closing bracket
1381    or brace.
1382
1383Whitespace, ``:`` and ``,`` are ignored.
1384
1385The following functions compose the parsing and validation API:
1386
1387.. function:: int json_unpack(json_t *root, const char *fmt, ...)
1388
1389   Validate and unpack the JSON value *root* according to the format
1390   string *fmt*. Returns 0 on success and -1 on failure.
1391
1392.. function:: int json_unpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, ...)
1393              int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, va_list ap)
1394
1395   Validate and unpack the JSON value *root* according to the format
1396   string *fmt*. If an error occurs and *error* is not *NULL*, write
1397   error information to *error*. *flags* can be used to control the
1398   behaviour of the unpacker, see below for the flags. Returns 0 on
1399   success and -1 on failure.
1400
1401.. note::
1402
1403   The first argument of all unpack functions is ``json_t *root``
1404   instead of ``const json_t *root``, because the use of ``O`` format
1405   specifier causes the reference count of ``root``, or some value
1406   reachable from ``root``, to be increased. Furthermore, the ``o``
1407   format specifier may be used to extract a value as-is, which allows
1408   modifying the structure or contents of a value reachable from
1409   ``root``.
1410
1411   If the ``O`` and ``o`` format specifiers are not used, it's
1412   perfectly safe to cast a ``const json_t *`` variable to plain
1413   ``json_t *`` when used with these functions.
1414
1415The following unpacking flags are available:
1416
1417``JSON_STRICT``
1418    Enable the extra validation step checking that all object and
1419    array items are unpacked. This is equivalent to appending the
1420    format specifier ``!`` to the end of every array and object in the
1421    format string.
1422
1423``JSON_VALIDATE_ONLY``
1424    Don't extract any data, just validate the JSON value against the
1425    given format string. Note that object keys must still be specified
1426    after the format string.
1427
1428Examples::
1429
1430    /* root is the JSON integer 42 */
1431    int myint;
1432    json_unpack(root, "i", &myint);
1433    assert(myint == 42);
1434
1435    /* root is the JSON object {"foo": "bar", "quux": true} */
1436    const char *str;
1437    int boolean;
1438    json_unpack(root, "{s:s, s:b}", "foo", &str, "quux", &boolean);
1439    assert(strcmp(str, "bar") == 0 && boolean == 1);
1440
1441    /* root is the JSON array [[1, 2], {"baz": null} */
1442    json_error_t error;
1443    json_unpack_ex(root, &error, JSON_VALIDATE_ONLY, "[[i,i], {s:n}]", "baz");
1444    /* returns 0 for validation success, nothing is extracted */
1445
1446    /* root is the JSON array [1, 2, 3, 4, 5] */
1447    int myint1, myint2;
1448    json_unpack(root, "[ii!]", &myint1, &myint2);
1449    /* returns -1 for failed validation */
1450
1451    /* root is an empty JSON object */
1452    int myint = 0, myint2 = 0;
1453    json_unpack(root, "{s?i, s?[ii]}",
1454                "foo", &myint1,
1455                "bar", &myint2, &myint3);
1456    /* myint1, myint2 or myint3 is no touched as "foo" and "bar" don't exist */
1457
1458
1459Equality
1460========
1461
1462Testing for equality of two JSON values cannot, in general, be
1463achieved using the ``==`` operator. Equality in the terms of the
1464``==`` operator states that the two :type:`json_t` pointers point to
1465exactly the same JSON value. However, two JSON values can be equal not
1466only if they are exactly the same value, but also if they have equal
1467"contents":
1468
1469* Two integer or real values are equal if their contained numeric
1470  values are equal. An integer value is never equal to a real value,
1471  though.
1472
1473* Two strings are equal if their contained UTF-8 strings are equal,
1474  byte by byte. Unicode comparison algorithms are not implemented.
1475
1476* Two arrays are equal if they have the same number of elements and
1477  each element in the first array is equal to the corresponding
1478  element in the second array.
1479
1480* Two objects are equal if they have exactly the same keys and the
1481  value for each key in the first object is equal to the value of the
1482  corresponding key in the second object.
1483
1484* Two true, false or null values have no "contents", so they are equal
1485  if their types are equal. (Because these values are singletons,
1486  their equality can actually be tested with ``==``.)
1487
1488The following function can be used to test whether two JSON values are
1489equal.
1490
1491.. function:: int json_equal(json_t *value1, json_t *value2)
1492
1493   Returns 1 if *value1* and *value2* are equal, as defined above.
1494   Returns 0 if they are inequal or one or both of the pointers are
1495   *NULL*.
1496
1497
1498Copying
1499=======
1500
1501Because of reference counting, passing JSON values around doesn't
1502require copying them. But sometimes a fresh copy of a JSON value is
1503needed. For example, if you need to modify an array, but still want to
1504use the original afterwards, you should take a copy of it first.
1505
1506Jansson supports two kinds of copying: shallow and deep. There is a
1507difference between these methods only for arrays and objects. Shallow
1508copying only copies the first level value (array or object) and uses
1509the same child values in the copied value. Deep copying makes a fresh
1510copy of the child values, too. Moreover, all the child values are deep
1511copied in a recursive fashion.
1512
1513.. function:: json_t *json_copy(json_t *value)
1514
1515   .. refcounting:: new
1516
1517   Returns a shallow copy of *value*, or *NULL* on error.
1518
1519.. function:: json_t *json_deep_copy(const json_t *value)
1520
1521   .. refcounting:: new
1522
1523   Returns a deep copy of *value*, or *NULL* on error.
1524
1525
1526.. _apiref-custom-memory-allocation:
1527
1528Custom Memory Allocation
1529========================
1530
1531By default, Jansson uses :func:`malloc()` and :func:`free()` for
1532memory allocation. These functions can be overridden if custom
1533behavior is needed.
1534
1535.. type:: json_malloc_t
1536
1537   A typedef for a function pointer with :func:`malloc()`'s
1538   signature::
1539
1540       typedef void *(*json_malloc_t)(size_t);
1541
1542.. type:: json_free_t
1543
1544   A typedef for a function pointer with :func:`free()`'s
1545   signature::
1546
1547       typedef void (*json_free_t)(void *);
1548
1549.. function:: void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn)
1550
1551   Use *malloc_fn* instead of :func:`malloc()` and *free_fn* instead
1552   of :func:`free()`. This function has to be called before any other
1553   Jansson's API functions to ensure that all memory operations use
1554   the same functions.
1555
1556**Examples:**
1557
1558Circumvent problems with different CRT heaps on Windows by using
1559application's :func:`malloc()` and :func:`free()`::
1560
1561    json_set_alloc_funcs(malloc, free);
1562
1563Use the `Boehm's conservative garbage collector`_ for memory
1564operations::
1565
1566    json_set_alloc_funcs(GC_malloc, GC_free);
1567
1568.. _Boehm's conservative garbage collector: http://www.hpl.hp.com/personal/Hans_Boehm/gc/
1569
1570Allow storing sensitive data (e.g. passwords or encryption keys) in
1571JSON structures by zeroing all memory when freed::
1572
1573    static void *secure_malloc(size_t size)
1574    {
1575        /* Store the memory area size in the beginning of the block */
1576        void *ptr = malloc(size + 8);
1577        *((size_t *)ptr) = size;
1578        return ptr + 8;
1579    }
1580
1581    static void secure_free(void *ptr)
1582    {
1583        size_t size;
1584
1585        ptr -= 8;
1586        size = *((size_t *)ptr);
1587
1588        guaranteed_memset(ptr, 0, size + 8);
1589        free(ptr);
1590    }
1591
1592    int main()
1593    {
1594        json_set_alloc_funcs(secure_malloc, secure_free);
1595        /* ... */
1596    }
1597
1598For more information about the issues of storing sensitive data in
1599memory, see
1600http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/protect-secrets.html.
1601The page also explains the :func:`guaranteed_memset()` function used
1602in the example and gives a sample implementation for it.
1603