Add lots of tests for pack/unpack code, fix bugs found
[jansson.git] / doc / apiref.rst
1 .. _apiref:
2
3 *************
4 API Reference
5 *************
6
7 .. highlight:: c
8
9 Preliminaries
10 =============
11
12 All declarations are in :file:`jansson.h`, so it's enough to
13
14 ::
15
16    #include <jansson.h>
17
18 in each source file.
19
20 All constants are prefixed with ``JSON_`` (except for those describing
21 the library version, prefixed with ``JANSSON_``). Other identifiers
22 are prefixed with ``json_``. Type names are suffixed with ``_t`` and
23 ``typedef``\ 'd so that the ``struct`` keyword need not be used.
24
25
26 Library Version
27 ===============
28
29 The Jansson version is of the form *A.B.C*, where *A* is the major
30 version, *B* is the minor version and *C* is the micro version. If the
31 micro version is zero, it's omitted from the version string, i.e. the
32 version string is just *A.B*.
33
34 When a new release only fixes bugs and doesn't add new features or
35 functionality, the micro version is incremented. When new features are
36 added in a backwards compatible way, the minor version is incremented
37 and the micro version is set to zero. When there are backwards
38 incompatible changes, the major version is incremented and others are
39 set to zero.
40
41 The following preprocessor constants specify the current version of
42 the library:
43
44 ``JANSSON_VERSION_MAJOR``, ``JANSSON_VERSION_MINOR``, ``JANSSON_VERSION_MICRO``
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
62 Value Representation
63 ====================
64
65 The JSON specification (:rfc:`4627`) defines the following data types:
66 *object*, *array*, *string*, *number*, *boolean*, and *null*. JSON
67 types are used dynamically; arrays and objects can hold any other data
68 type, including themselves. For this reason, Jansson's type system is
69 also dynamic in nature. There's one C type to represent all JSON
70 values, 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
79 Objects of :type:`json_t` are always used through a pointer. There
80 are APIs for querying the type, manipulating the reference count, and
81 for constructing and manipulating values of different types.
82
83 Unless noted otherwise, all API functions return an error value if an
84 error occurs. Depending on the function's signature, the error value
85 is either *NULL* or -1. Invalid arguments or invalid input are
86 apparent sources for errors. Memory allocation and I/O operations may
87 also cause errors.
88
89
90 Type
91 ----
92
93 The type of a JSON value is queried and tested using the following
94 functions:
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
154 .. _apiref-reference-count:
155
156 Reference Count
157 ---------------
158
159 The reference count is used to track whether a value is still in use
160 or not. When a value is created, it's reference count is set to 1. If
161 a reference to a value is kept (e.g. a value is stored somewhere for
162 later use), its reference count is incremented, and when the value is
163 no longer needed, the reference count is decremented. When the
164 reference count drops to zero, there are no references left, and the
165 value can be destroyed.
166
167 The following functions are used to manipulate the reference count.
168
169 .. function:: json_t *json_incref(json_t *json)
170
171    Increment the reference count of *json* if it's not non-*NULL*.
172    Returns *json*.
173
174 .. function:: void json_decref(json_t *json)
175
176    Decrement the reference count of *json*. As soon as a call to
177    :func:`json_decref()` drops the reference count to zero, the value
178    is destroyed and it can no longer be used.
179
180 Functions creating new JSON values set the reference count to 1. These
181 functions are said to return a **new reference**. Other functions
182 returning (existing) JSON values do not normally increase the
183 reference count. These functions are said to return a **borrowed
184 reference**. So, if the user will hold a reference to a value returned
185 as a borrowed reference, he must call :func:`json_incref`. As soon as
186 the value is no longer needed, :func:`json_decref` should be called
187 to release the reference.
188
189 Normally, all functions accepting a JSON value as an argument will
190 manage the reference, i.e. increase and decrease the reference count
191 as needed. However, some functions **steal** the reference, i.e. they
192 have the same result as if the user called :func:`json_decref()` on
193 the argument right after calling the function. These functions are
194 suffixed with ``_new`` or have ``_new_`` somewhere in their name.
195
196 For example, the following code creates a new JSON array and appends
197 an integer to it::
198
199   json_t *array, *integer;
200
201   array = json_array();
202   integer = json_integer(42);
203
204   json_array_append(array, integer);
205   json_decref(integer);
206
207 Note how the caller has to release the reference to the integer value
208 by calling :func:`json_decref()`. By using a reference stealing
209 function :func:`json_array_append_new()` instead of
210 :func:`json_array_append()`, the code becomes much simpler::
211
212   json_t *array = json_array();
213   json_array_append_new(array, json_integer(42));
214
215 In this case, the user doesn't have to explicitly release the
216 reference to the integer value, as :func:`json_array_append_new()`
217 steals the reference when appending the value to the array.
218
219 In the following sections it is clearly documented whether a function
220 will return a new or borrowed reference or steal a reference to its
221 argument.
222
223
224 Circular References
225 -------------------
226
227 A circular reference is created when an object or an array is,
228 directly or indirectly, inserted inside itself. The direct case is
229 simple::
230
231   json_t *obj = json_object();
232   json_object_set(obj, "foo", obj);
233
234 Jansson will refuse to do this, and :func:`json_object_set()` (and
235 all the other such functions for objects and arrays) will return with
236 an error status. The indirect case is the dangerous one::
237
238   json_t *arr1 = json_array(), *arr2 = json_array();
239   json_array_append(arr1, arr2);
240   json_array_append(arr2, arr1);
241
242 In this example, the array ``arr2`` is contained in the array
243 ``arr1``, and vice versa. Jansson cannot check for this kind of
244 indirect circular references without a performance hit, so it's up to
245 the user to avoid them.
246
247 If a circular reference is created, the memory consumed by the values
248 cannot be freed by :func:`json_decref()`. The reference counts never
249 drops to zero because the values are keeping the references to each
250 other. Moreover, trying to encode the values with any of the encoding
251 functions will fail. The encoder detects circular references and
252 returns an error status.
253
254
255 True, False and Null
256 ====================
257
258 These values are implemented as singletons, so each of these functions
259 returns the same value each time.
260
261 .. function:: json_t *json_true(void)
262
263    .. refcounting:: new
264
265    Returns the JSON true value.
266
267 .. function:: json_t *json_false(void)
268
269    .. refcounting:: new
270
271    Returns the JSON false value.
272
273 .. function:: json_t *json_null(void)
274
275    .. refcounting:: new
276
277    Returns the JSON null value.
278
279
280 String
281 ======
282
283 Jansson uses UTF-8 as the character encoding. All JSON strings must be
284 valid UTF-8 (or ASCII, as it's a subset of UTF-8). Normal null
285 terminated C strings are used, so JSON strings may not contain
286 embedded null characters. All other Unicode codepoints U+0001 through
287 U+10FFFF are allowed.
288
289 .. function:: json_t *json_string(const char *value)
290
291    .. refcounting:: new
292
293    Returns a new JSON string, or *NULL* on error. *value* must be a
294    valid UTF-8 encoded Unicode string.
295
296 .. function:: json_t *json_string_nocheck(const char *value)
297
298    .. refcounting:: new
299
300    Like :func:`json_string`, but doesn't check that *value* is valid
301    UTF-8. Use this function only if you are certain that this really
302    is the case (e.g. you have already checked it by other means).
303
304 .. function:: const char *json_string_value(const json_t *string)
305
306    Returns the associated value of *string* as a null terminated UTF-8
307    encoded string, or *NULL* if *string* is not a JSON string.
308
309    The retuned value is read-only and must not be modified or freed by
310    the user. It is valid as long as *string* exists, i.e. as long as
311    its reference count has not dropped to zero.
312
313 .. function:: int json_string_set(const json_t *string, const char *value)
314
315    Sets the associated value of *string* to *value*. *value* must be a
316    valid UTF-8 encoded Unicode string. Returns 0 on success and -1 on
317    error.
318
319 .. function:: int json_string_set_nocheck(const json_t *string, const char *value)
320
321    Like :func:`json_string_set`, but doesn't check that *value* is
322    valid UTF-8. Use this function only if you are certain that this
323    really is the case (e.g. you have already checked it by other
324    means).
325
326
327 Number
328 ======
329
330 The JSON specification only contains one numeric type, "number". The C
331 programming language has distinct types for integer and floating-point
332 numbers, so for practical reasons Jansson also has distinct types for
333 the two. They are called "integer" and "real", respectively. For more
334 information, see :ref:`rfc-conformance`.
335
336 .. type:: json_int_t
337
338    This is the C type that is used to store JSON integer values. It
339    represents the widest integer type available on your system. In
340    practice it's just a typedef of ``long long`` if your compiler
341    supports it, otherwise ``long``.
342
343    Usually, you can safely use plain ``int`` in place of
344    ``json_int_t``, and the implicit C integer conversion handles the
345    rest. Only when you know that you need the full 64-bit range, you
346    should use ``json_int_t`` explicitly.
347
348 ``JSON_INTEGER_IS_LONG_LONG``
349
350    This is a preprocessor variable that holds the value 1 if
351    :type:`json_int_t` is ``long long``, and 0 if it's ``long``. It
352    can be used as follows::
353
354        #if JSON_INTEGER_IS_LONG_LONG
355        /* Code specific for long long */
356        #else
357        /* Code specific for long */
358        #endif
359
360 ``JSON_INTEGER_FORMAT``
361
362    This is a macro that expands to a :func:`printf()` conversion
363    specifier that corresponds to :type:`json_int_t`, without the
364    leading ``%`` sign, i.e. either ``"lld"`` or ``"ld"``. This macro
365    is required because the actual type of :type:`json_int_t` can be
366    either ``long`` or ``long long``, and :func:`printf()` reuiqres
367    different length modifiers for the two.
368
369    Example::
370
371        json_int_t x = 123123123;
372        printf("x is %" JSON_INTEGER_FORMAT "\n", x);
373
374
375 .. function:: json_t *json_integer(json_int_t value)
376
377    .. refcounting:: new
378
379    Returns a new JSON integer, or *NULL* on error.
380
381 .. function:: json_int_t json_integer_value(const json_t *integer)
382
383    Returns the associated value of *integer*, or 0 if *json* is not a
384    JSON integer.
385
386 .. function:: int json_integer_set(const json_t *integer, json_int_t value)
387
388    Sets the associated value of *integer* to *value*. Returns 0 on
389    success and -1 if *integer* is not a JSON integer.
390
391 .. function:: json_t *json_real(double value)
392
393    .. refcounting:: new
394
395    Returns a new JSON real, or *NULL* on error.
396
397 .. function:: double json_real_value(const json_t *real)
398
399    Returns the associated value of *real*, or 0.0 if *real* is not a
400    JSON real.
401
402 .. function:: int json_real_set(const json_t *real, double value)
403
404    Sets the associated value of *real* to *value*. Returns 0 on
405    success and -1 if *real* is not a JSON real.
406
407 In addition to the functions above, there's a common query function
408 for integers and reals:
409
410 .. function:: double json_number_value(const json_t *json)
411
412    Returns the associated value of the JSON integer or JSON real
413    *json*, cast to double regardless of the actual type. If *json* is
414    neither JSON real nor JSON integer, 0.0 is returned.
415
416
417 Array
418 =====
419
420 A JSON array is an ordered collection of other JSON values.
421
422 .. function:: json_t *json_array(void)
423
424    .. refcounting:: new
425
426    Returns a new JSON array, or *NULL* on error. Initially, the array
427    is empty.
428
429 .. function:: size_t json_array_size(const json_t *array)
430
431    Returns the number of elements in *array*, or 0 if *array* is NULL
432    or not a JSON array.
433
434 .. function:: json_t *json_array_get(const json_t *array, size_t index)
435
436    .. refcounting:: borrow
437
438    Returns the element in *array* at position *index*. The valid range
439    for *index* is from 0 to the return value of
440    :func:`json_array_size()` minus 1. If *array* is not a JSON array,
441    if *array* is *NULL*, or if *index* is out of range, *NULL* is
442    returned.
443
444 .. function:: int json_array_set(json_t *array, size_t index, json_t *value)
445
446    Replaces the element in *array* at position *index* with *value*.
447    The valid range for *index* is from 0 to the return value of
448    :func:`json_array_size()` minus 1. Returns 0 on success and -1 on
449    error.
450
451 .. function:: int json_array_set_new(json_t *array, size_t index, json_t *value)
452
453    Like :func:`json_array_set()` but steals the reference to *value*.
454    This is useful when *value* is newly created and not used after
455    the call.
456
457 .. function:: int json_array_append(json_t *array, json_t *value)
458
459    Appends *value* to the end of *array*, growing the size of *array*
460    by 1. Returns 0 on success and -1 on error.
461
462 .. function:: int json_array_append_new(json_t *array, json_t *value)
463
464    Like :func:`json_array_append()` but steals the reference to
465    *value*. This is useful when *value* is newly created and not used
466    after the call.
467
468 .. function:: int json_array_insert(json_t *array, size_t index, json_t *value)
469
470    Inserts *value* to *array* at position *index*, shifting the
471    elements at *index* and after it one position towards the end of
472    the array. Returns 0 on success and -1 on error.
473
474 .. function:: int json_array_insert_new(json_t *array, size_t index, json_t *value)
475
476    Like :func:`json_array_insert()` but steals the reference to
477    *value*. This is useful when *value* is newly created and not used
478    after the call.
479
480 .. function:: int json_array_remove(json_t *array, size_t index)
481
482    Removes the element in *array* at position *index*, shifting the
483    elements after *index* one position towards the start of the array.
484    Returns 0 on success and -1 on error.
485
486 .. function:: int json_array_clear(json_t *array)
487
488    Removes all elements from *array*. Returns 0 on sucess and -1 on
489    error.
490
491 .. function:: int json_array_extend(json_t *array, json_t *other_array)
492
493    Appends all elements in *other_array* to the end of *array*.
494    Returns 0 on success and -1 on error.
495
496
497 Object
498 ======
499
500 A JSON object is a dictionary of key-value pairs, where the key is a
501 Unicode string and the value is any JSON value.
502
503 .. function:: json_t *json_object(void)
504
505    .. refcounting:: new
506
507    Returns a new JSON object, or *NULL* on error. Initially, the
508    object is empty.
509
510 .. function:: size_t json_object_size(const json_t *object)
511
512    Returns the number of elements in *object*, or 0 if *object* is not
513    a JSON object.
514
515 .. function:: json_t *json_object_get(const json_t *object, const char *key)
516
517    .. refcounting:: borrow
518
519    Get a value corresponding to *key* from *object*. Returns *NULL* if
520    *key* is not found and on error.
521
522 .. function:: int json_object_set(json_t *object, const char *key, json_t *value)
523
524    Set the value of *key* to *value* in *object*. *key* must be a
525    valid null terminated UTF-8 encoded Unicode string. If there
526    already is a value for *key*, it is replaced by the new value.
527    Returns 0 on success and -1 on error.
528
529 .. function:: int json_object_set_nocheck(json_t *object, const char *key, json_t *value)
530
531    Like :func:`json_object_set`, but doesn't check that *key* is
532    valid UTF-8. Use this function only if you are certain that this
533    really is the case (e.g. you have already checked it by other
534    means).
535
536 .. function:: int json_object_set_new(json_t *object, const char *key, json_t *value)
537
538    Like :func:`json_object_set()` but steals the reference to
539    *value*. This is useful when *value* is newly created and not used
540    after the call.
541
542 .. function:: int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value)
543
544    Like :func:`json_object_set_new`, but doesn't check that *key* is
545    valid UTF-8. Use this function only if you are certain that this
546    really is the case (e.g. you have already checked it by other
547    means).
548
549 .. function:: int json_object_del(json_t *object, const char *key)
550
551    Delete *key* from *object* if it exists. Returns 0 on success, or
552    -1 if *key* was not found.
553
554
555 .. function:: int json_object_clear(json_t *object)
556
557    Remove all elements from *object*. Returns 0 on success and -1 if
558    *object* is not a JSON object.
559
560 .. function:: int json_object_update(json_t *object, json_t *other)
561
562    Update *object* with the key-value pairs from *other*, overwriting
563    existing keys. Returns 0 on success or -1 on error.
564
565
566 The following functions implement an iteration protocol for objects:
567
568 .. function:: void *json_object_iter(json_t *object)
569
570    Returns an opaque iterator which can be used to iterate over all
571    key-value pairs in *object*, or *NULL* if *object* is empty.
572
573 .. function:: void *json_object_iter_at(json_t *object, const char *key)
574
575    Like :func:`json_object_iter()`, but returns an iterator to the
576    key-value pair in *object* whose key is equal to *key*, or NULL if
577    *key* is not found in *object*. Iterating forward to the end of
578    *object* only yields all key-value pairs of the object if *key*
579    happens to be the first key in the underlying hash table.
580
581 .. function:: void *json_object_iter_next(json_t *object, void *iter)
582
583    Returns an iterator pointing to the next key-value pair in *object*
584    after *iter*, or *NULL* if the whole object has been iterated
585    through.
586
587 .. function:: const char *json_object_iter_key(void *iter)
588
589    Extract the associated key from *iter*.
590
591 .. function:: json_t *json_object_iter_value(void *iter)
592
593    .. refcounting:: borrow
594
595    Extract the associated value from *iter*.
596
597 .. function:: int json_object_iter_set(json_t *object, void *iter, json_t *value)
598
599    Set the value of the key-value pair in *object*, that is pointed to
600    by *iter*, to *value*.
601
602 .. function:: int json_object_iter_set_new(json_t *object, void *iter, json_t *value)
603
604    Like :func:`json_object_iter_set()`, but steals the reference to
605    *value*. This is useful when *value* is newly created and not used
606    after the call.
607
608 The iteration protocol can be used for example as follows::
609
610    /* obj is a JSON object */
611    const char *key;
612    json_t *value;
613    void *iter = json_object_iter(obj);
614    while(iter)
615    {
616        key = json_object_iter_key(iter);
617        value = json_object_iter_value(iter);
618        /* use key and value ... */
619        iter = json_object_iter_next(obj, iter);
620    }
621
622
623 Error reporting
624 ===============
625
626 Jansson uses a single struct type to pass error information to the
627 user. See sections :ref:`apiref-decoding`, :ref:`apiref-pack` and
628 :ref:`apiref-unpack` for functions that pass error information using
629 this struct.
630
631 .. type:: json_error_t
632
633    .. member:: char text[]
634
635       The error message (in UTF-8), or an empty string if a message is
636       not available.
637
638    .. member:: char source[]
639
640       Source of the error. This can be (a part of) the file name or a
641       special identifier in angle brackers (e.g. ``<string>``).
642
643    .. member:: int line
644
645       The line number on which the error occurred.
646
647    .. member:: int column
648
649       The column on which the error occurred. Note that this is the
650       *character column*, not the byte column, i.e. a multibyte UTF-8
651       character counts as one column.
652
653    .. member:: size_t position
654
655       The position in bytes from the start of the input. This is
656       useful for debugging Unicode encoding problems.
657
658 The normal use of :type:`json_error_t` is to allocate it on the stack,
659 and pass a pointer to a function. Example::
660
661    int main() {
662        json_t *json;
663        json_error_t error;
664
665        json = json_load_file("/path/to/file.json", 0, &error);
666        if(!json) {
667            /* the error variable contains error information */
668        }
669        ...
670    }
671
672 Also note that if the call succeeded (``json != NULL`` in the above
673 example), the contents of ``error`` are unspecified.
674
675 All functions also accept *NULL* as the :type:`json_error_t` pointer,
676 in which case no error information is returned to the caller.
677
678
679 Encoding
680 ========
681
682 This sections describes the functions that can be used to encode
683 values to JSON. Only objects and arrays can be encoded, since they are
684 the only valid "root" values of a JSON text.
685
686 By default, the output has no newlines, and spaces are used between
687 array and object elements for a readable output. This behavior can be
688 altered by using the ``JSON_INDENT`` and ``JSON_COMPACT`` flags
689 described below. A newline is never appended to the end of the encoded
690 JSON data.
691
692 Each function takes a *flags* parameter that controls some aspects of
693 how the data is encoded. Its default value is 0. The following macros
694 can be ORed together to obtain *flags*.
695
696 ``JSON_INDENT(n)``
697    Pretty-print the result, using newlines between array and object
698    items, and indenting with *n* spaces. The valid range for *n* is
699    between 0 and 32, other values result in an undefined output. If
700    ``JSON_INDENT`` is not used or *n* is 0, no newlines are inserted
701    between array and object items.
702
703 ``JSON_COMPACT``
704    This flag enables a compact representation, i.e. sets the separator
705    between array and object items to ``","`` and between object keys
706    and values to ``":"``. Without this flag, the corresponding
707    separators are ``", "`` and ``": "`` for more readable output.
708
709 ``JSON_ENSURE_ASCII``
710    If this flag is used, the output is guaranteed to consist only of
711    ASCII characters. This is achived by escaping all Unicode
712    characters outside the ASCII range.
713
714 ``JSON_SORT_KEYS``
715    If this flag is used, all the objects in output are sorted by key.
716    This is useful e.g. if two JSON texts are diffed or visually
717    compared.
718
719 ``JSON_PRESERVE_ORDER``
720    If this flag is used, object keys in the output are sorted into the
721    same order in which they were first inserted to the object. For
722    example, decoding a JSON text and then encoding with this flag
723    preserves the order of object keys.
724
725 The following functions perform the actual JSON encoding. The result
726 is in UTF-8.
727
728 .. function:: char *json_dumps(const json_t *root, size_t flags)
729
730    Returns the JSON representation of *root* as a string, or *NULL* on
731    error. *flags* is described above. The return value must be freed
732    by the caller using :func:`free()`.
733
734 .. function:: int json_dumpf(const json_t *root, FILE *output, size_t flags)
735
736    Write the JSON representation of *root* to the stream *output*.
737    *flags* is described above. Returns 0 on success and -1 on error.
738    If an error occurs, something may have already been written to
739    *output*. In this case, the output is undefined and most likely not
740    valid JSON.
741
742 .. function:: int json_dump_file(const json_t *json, const char *path, size_t flags)
743
744    Write the JSON representation of *root* to the file *path*. If
745    *path* already exists, it is overwritten. *flags* is described
746    above. Returns 0 on success and -1 on error.
747
748
749 .. _apiref-decoding:
750
751 Decoding
752 ========
753
754 This sections describes the functions that can be used to decode JSON
755 text to the Jansson representation of JSON data. The JSON
756 specification requires that a JSON text is either a serialized array
757 or object, and this requirement is also enforced with the following
758 functions. In other words, the top level value in the JSON text being
759 decoded must be either array or object.
760
761 See :ref:`rfc-conformance` for a discussion on Jansson's conformance
762 to the JSON specification. It explains many design decisions that
763 affect especially the behavior of the decoder.
764
765 .. function:: json_t *json_loads(const char *input, size_t flags, json_error_t *error)
766
767    .. refcounting:: new
768
769    Decodes the JSON string *input* and returns the array or object it
770    contains, or *NULL* on error, in which case *error* is filled with
771    information about the error. *flags* is currently unused, and
772    should be set to 0.
773
774 .. function:: json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
775
776    .. refcounting:: new
777
778    Decodes the JSON text in stream *input* and returns the array or
779    object it contains, or *NULL* on error, in which case *error* is
780    filled with information about the error. *flags* is currently
781    unused, and should be set to 0.
782
783 .. function:: json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
784
785    .. refcounting:: new
786
787    Decodes the JSON text in file *path* and returns the array or
788    object it contains, or *NULL* on error, in which case *error* is
789    filled with information about the error. *flags* is currently
790    unused, and should be set to 0.
791
792
793 .. _apiref-pack:
794
795 Building values
796 ===============
797
798 This sectinon describes functions that help to create, or *pack*,
799 complex JSON values, especially nested objects and arrays. Value
800 building is based on a *format string* that is used to tell the
801 functions about the expected arguments.
802
803 For example, the format string ``"i"`` specifies a single integer
804 value, while the format string ``"[ssb]"`` or the equivalent ``"[s, s,
805 b]"`` specifies an array value with two integers and a boolean as its
806 items::
807
808     /* Create the JSON integer 42 */
809     json_pack("i", 42);
810
811     /* Create the JSON array ["foo", "bar", true] */
812     json_pack("[ssb]", "foo", "bar", 1);
813
814 Here's the full list of format characters. The type in parentheses
815 denotes the resulting JSON type, and the type in brackets (if any)
816 denotes the C type that is expected as the corresponding argument.
817
818 ``s`` (string) [const char \*]
819     Convert a NULL terminated UTF-8 string to a JSON string.
820
821 ``n`` (null)
822     Output a JSON null value. No argument is consumed.
823
824 ``b`` (boolean) [int]
825     Convert a C :type:`int` to JSON boolean value. Zero is converted
826     to ``false`` and non-zero to ``true``.
827
828 ``i`` (integer) [int]
829     Convert a C :type:`int` to JSON integer.
830
831 ``I`` (integer) [json_int_t]
832     Convert a C :type:`json_int_t` to JSON integer.
833
834 ``f`` (real) [double]
835     Convert a C :type:`double` to JSON real.
836
837 ``o`` (any value) [json_t \*]
838     Output any given JSON value as-is. If the value is added to an
839     array or object, the reference to the value passed to ``o`` is
840     stealed by the container.
841
842 ``O`` (any value) [json_t \*]
843     Like ``o``, but the argument's reference count is incremented.
844     This is useful if you pack into an array or object and want to
845     keep the reference for the JSON value consumed by ``O`` to
846     yourself.
847
848 ``[fmt]`` (array)
849     Build an array with contents from the inner format string. ``fmt``
850     may contain objects and arrays, i.e. recursive value building is
851     supported.
852
853 ``{fmt}`` (object)
854     Build an object with contents from the inner format string
855     ``fmt``. The first, third, etc. format character represent a key,
856     and must be ``s`` (as object keys are always strings). The second,
857     fourth, etc. format character represent a value. Any value may be
858     an object or array, i.e. recursive value building is supported.
859
860 The following functions compose the value building API:
861
862 .. function:: json_t *json_pack(const char *fmt, ...)
863
864    .. refcounting:: new
865
866    Build a new JSON value according to the format string *fmt*. For
867    each format character (except for ``{}[]n``), one argument is
868    consumed and used to build the corresponding value. Returns *NULL*
869    on error.
870
871 .. function:: json_t *json_pack_ex(json_error_t *error, size_t flags, const char *fmt, ...)
872               json_t *json_vpack_ex(json_error_t *error, size_t flags, const char *fmt, va_list ap)
873
874    .. refcounting:: new
875
876    Like :func:`json_pack()`, but an in the case of an error, an error
877    message is written to *error*, if it's not *NULL*. The *flags*
878    parameter is currently unused and should be set to 0.
879
880    As only the errors in format string (and out-of-memory errors) can
881    be caught by the packer, these two functions are most likely only
882    useful for debugging format strings.
883
884 More examples::
885
886   /* Build an empty JSON object */
887   json_pack("{}");
888
889   /* Build the JSON object {"foo": 42, "bar": 7} */
890   json_pack("{sisb}", "foo", 42, "bar", 7);
891
892   /* Like above, ':', ',' and whitespace are ignored */
893   json_pack("{s:i, s:b}", "foo", 42, "bar", 7);
894
895   /* Build the JSON array [[1, 2], {"cool": true}] */
896   json_pack("[[i,i],{s:b]]", 1, 2, "cool", 1);
897
898
899 .. _apiref-unpack:
900
901 Parsing and validating values
902 =============================
903
904 This sectinon describes functions that help to validate complex values
905 and extract, or *unpack*, data from them. Like :ref:`building values
906 <apiref-pack>`, this is also based on format strings.
907
908 While a JSON value is unpacked, the type specified in the format
909 string is checked to match that of the JSON value. This is the
910 validation part of the process. In addition to this, the unpacking
911 functions can also check that all items of arrays and objects are
912 unpacked. This check be enabled with the format character ``!`` or by
913 using the flag ``JSON_STRICT``. See below for details.
914
915 Here's the full list of format characters. The type in parentheses
916 denotes the JSON type, and the type in brackets (if any) denotes the C
917 type whose address should be passed.
918
919 ``s`` (string) [const char \*]
920     Convert a JSON string to a pointer to a NULL terminated UTF-8
921     string.
922
923 ``n`` (null)
924     Expect a JSON null value. Nothing is extracted.
925
926 ``b`` (boolean) [int]
927     Convert a JSON boolean value to a C :type:`int`, so that ``true``
928     is converted to 1 and ``false`` to 0.
929
930 ``i`` (integer) [int]
931     Convert a JSON integer to C :type:`int`.
932
933 ``I`` (integer) [json_int_t]
934     Convert a JSON integer to C :type:`json_int_t`.
935
936 ``f`` (real) [double]
937     Convert a JSON real to C :type:`double`.
938
939 ``F`` (integer or real) [double]
940     Convert a JSON number (integer or real) to C :type:`double`.
941
942 ``o`` (any value) [json_t \*]
943     Store a JSON value with no conversion to a :type:`json_t` pointer.
944
945 ``O`` (any value) [json_t \*]
946     Like ``O``, but the JSON value's reference count is incremented.
947
948 ``[fmt]`` (array)
949     Convert each item in the JSON array according to the inner format
950     string. ``fmt`` may contain objects and arrays, i.e. recursive
951     value extraction is supporetd.
952
953 ``{fmt}`` (object)
954     Convert each item in the JSON object according to the inner format
955     string ``fmt``. The first, third, etc. format character represent
956     a key, and must be ``s``. The corresponding argument to unpack
957     functions is read as the object key. The second fourth, etc.
958     format character represent a value and is written to the address
959     given as the corresponding argument. **Note** that every other
960     argument is read from and every other is written to.
961
962     ``fmt`` may contain objects and arrays as values, i.e. recursive
963     value extraction is supporetd.
964
965 ``!``
966     This special format character is used to enable the check that
967     all object and array items are accessed, on a per-value basis. It
968     must appear inside an array or object as the last format character
969     before the closing bracket or brace. To enable the check globally,
970     use the ``JSON_STRICT`` unpacking flag.
971
972 ``*``
973     This special format character is the opposite of ``!``. If the
974     ``JSON_STRICT`` flag is used, ``*`` can be used to disable the
975     strict check on a per-value basis. It must appear inside an array
976     or object as the last format character before the closing bracket
977     or brace.
978
979 The following functions compose the parsing and validation API:
980
981 .. function:: int json_unpack(json_t *root, const char *fmt, ...)
982
983    Validate and unpack the JSON value *root* according to the format
984    string *fmt*. Returns 0 on success and -1 on failure.
985
986 .. function:: int json_unpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, ...)
987               int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, va_list ap)
988
989    Validate and unpack the JSON value *root* according to the format
990    string *fmt*. If an error occurs and *error* is not *NULL*, write
991    error information to *error*. *flags* can be used to control the
992    behaviour of the unpacker, see below for the flags. Returns 0 on
993    success and -1 on failure.
994
995 The following unpacking flags are available:
996
997 ``JSON_STRICT``
998     Enable the extra validation step checking that all object and
999     array items are unpacked. This is equivalent to appending the
1000     format character ``!`` to the end of every array and object in the
1001     format string.
1002
1003 ``JSON_VALIDATE_ONLY``
1004     Don't extract any data, just validate the JSON value against the
1005     given format string. Note that object keys must still be specified
1006     after the format string.
1007
1008 Examples::
1009
1010     /* root is the JSON integer 42 */
1011     int myint;
1012     json_unpack(root, "i", &myint);
1013     assert(myint == 42);
1014
1015     /* root is the JSON object {"foo": "bar", "quux": true} */
1016     const char *str;
1017     int boolean;
1018     json_unpack(root, "{s:s, s:b}", "foo", &str, "quux", &boolean);
1019     assert(strcmp(str, "bar") == 0 && boolean == 1);
1020
1021     /* root is the JSON array [[1, 2], {"baz": null} */
1022     json_error_t error;
1023     json_unpack_ex(root, &error, JSON_VALIDATE_ONLY, "[[i,i], {s:n}]", "baz");
1024     /* returns 0 for validation success, nothing is extracted */
1025
1026     /* root is the JSON array [1, 2, 3, 4, 5] */
1027     int myint1, myint2;
1028     json_unpack(root, "[ii!]", &myint1, &myint2);
1029     /* returns -1 for failed validation */
1030
1031
1032 Equality
1033 ========
1034
1035 Testing for equality of two JSON values cannot, in general, be
1036 achieved using the ``==`` operator. Equality in the terms of the
1037 ``==`` operator states that the two :type:`json_t` pointers point to
1038 exactly the same JSON value. However, two JSON values can be equal not
1039 only if they are exactly the same value, but also if they have equal
1040 "contents":
1041
1042 * Two integer or real values are equal if their contained numeric
1043   values are equal. An integer value is never equal to a real value,
1044   though.
1045
1046 * Two strings are equal if their contained UTF-8 strings are equal,
1047   byte by byte. Unicode comparison algorithms are not implemented.
1048
1049 * Two arrays are equal if they have the same number of elements and
1050   each element in the first array is equal to the corresponding
1051   element in the second array.
1052
1053 * Two objects are equal if they have exactly the same keys and the
1054   value for each key in the first object is equal to the value of the
1055   corresponding key in the second object.
1056
1057 * Two true, false or null values have no "contents", so they are equal
1058   if their types are equal. (Because these values are singletons,
1059   their equality can actually be tested with ``==``.)
1060
1061 The following function can be used to test whether two JSON values are
1062 equal.
1063
1064 .. function:: int json_equal(json_t *value1, json_t *value2)
1065
1066    Returns 1 if *value1* and *value2* are equal, as defined above.
1067    Returns 0 if they are inequal or one or both of the pointers are
1068    *NULL*.
1069
1070
1071 Copying
1072 =======
1073
1074 Because of reference counting, passing JSON values around doesn't
1075 require copying them. But sometimes a fresh copy of a JSON value is
1076 needed. For example, if you need to modify an array, but still want to
1077 use the original afterwards, you should take a copy of it first.
1078
1079 Jansson supports two kinds of copying: shallow and deep. There is a
1080 difference between these methods only for arrays and objects. Shallow
1081 copying only copies the first level value (array or object) and uses
1082 the same child values in the copied value. Deep copying makes a fresh
1083 copy of the child values, too. Moreover, all the child values are deep
1084 copied in a recursive fashion.
1085
1086 .. function:: json_t *json_copy(json_t *value)
1087
1088    .. refcounting:: new
1089
1090    Returns a shallow copy of *value*, or *NULL* on error.
1091
1092 .. function:: json_t *json_deep_copy(json_t *value)
1093
1094    .. refcounting:: new
1095
1096    Returns a deep copy of *value*, or *NULL* on error.
1097
1098
1099 Custom memory allocation
1100 ========================
1101
1102 By default, Jansson uses :func:`malloc()` and :func:`free()` for
1103 memory allocation. These functions can be overridden if custom
1104 behavior is needed.
1105
1106 .. type:: json_malloc_t
1107
1108    A typedef for a function pointer with :func:`malloc()`'s
1109    signature::
1110
1111        typedef void *(*json_malloc_t)(size_t);
1112
1113 .. type:: json_free_t
1114
1115    A typedef for a function pointer with :func:`free()`'s
1116    signature::
1117
1118        typedef void (*json_free_t)(void *);
1119
1120 .. function:: void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn)
1121
1122    Use *malloc_fn* instead of :func:`malloc()` and *free_fn* instead
1123    of :func:`free()`. This function has to be called before any other
1124    Jansson's API functions to ensure that all memory operations use
1125    the same functions.
1126
1127 Examples:
1128
1129 Use the `Boehm's conservative garbage collector`_ for memory
1130 operations::
1131
1132     json_set_alloc_funcs(GC_malloc, GC_free);
1133
1134 .. _Boehm's conservative garbage collector: http://www.hpl.hp.com/personal/Hans_Boehm/gc/
1135
1136 Allow storing sensitive data (e.g. passwords or encryption keys) in
1137 JSON structures by zeroing all memory when freed::
1138
1139     static void *secure_malloc(size_t size)
1140     {
1141         /* Store the memory area size in the beginning of the block */
1142         void *ptr = malloc(size + 8);
1143         *((size_t *)ptr) = size;
1144         return ptr + 8;
1145     }
1146
1147     static void secure_free(void *ptr)
1148     {
1149         size_t size;
1150
1151         ptr -= 8;
1152         size = *((size_t *)ptr);
1153
1154         guaranteed_memset(ptr, 0, size);
1155         free(ptr);
1156     }
1157
1158     int main()
1159     {
1160         json_set_alloc_funcs(secure_malloc, secure_free);
1161         /* ... */
1162     }
1163
1164 For more information about the issues of storing sensitive data in
1165 memory, see
1166 http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/protect-secrets.html.
1167 The page also examplains the :func:`guaranteed_memset()` function used
1168 in the example and gives a sample implementation for it.