Merge branch '1.3'
[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 ``JSON_`` and other identifiers with
21 ``json_``. Type names are suffixed with ``_t`` and ``typedef``\ 'd so
22 that the ``struct`` keyword need not be used.
23
24
25 Value Representation
26 ====================
27
28 The JSON specification (:rfc:`4627`) defines the following data types:
29 *object*, *array*, *string*, *number*, *boolean*, and *null*. JSON
30 types are used dynamically; arrays and objects can hold any other data
31 type, including themselves. For this reason, Jansson's type system is
32 also dynamic in nature. There's one C type to represent all JSON
33 values, and this structure knows the type of the JSON value it holds.
34
35 .. ctype:: json_t
36
37   This data structure is used throughout the library to represent all
38   JSON values. It always contains the type of the JSON value it holds
39   and the value's reference count. The rest depends on the type of the
40   value.
41
42 Objects of :ctype:`json_t` are always used through a pointer. There
43 are APIs for querying the type, manipulating the reference count, and
44 for constructing and manipulating values of different types.
45
46 Unless noted otherwise, all API functions return an error value if an
47 error occurs. Depending on the function's signature, the error value
48 is either *NULL* or -1. Invalid arguments or invalid input are
49 apparent sources for errors. Memory allocation and I/O operations may
50 also cause errors.
51
52
53 Type
54 ----
55
56 The type of a JSON value is queried and tested using the following
57 functions:
58
59 .. ctype:: enum json_type
60
61    The type of a JSON value. The following members are defined:
62
63    +-------------------------+
64    | :const:`JSON_OBJECT`    |
65    +-------------------------+
66    | :const:`JSON_ARRAY`     |
67    +-------------------------+
68    | :const:`JSON_STRING`    |
69    +-------------------------+
70    | :const:`JSON_INTEGER`   |
71    +-------------------------+
72    | :const:`JSON_REAL`      |
73    +-------------------------+
74    | :const:`JSON_TRUE`      |
75    +-------------------------+
76    | :const:`JSON_FALSE`     |
77    +-------------------------+
78    | :const:`JSON_NULL`      |
79    +-------------------------+
80
81    These correspond to JSON object, array, string, number, boolean and
82    null. A number is represented by either a value of the type
83    :const:`JSON_INTEGER` or of the type :const:`JSON_REAL`. A true
84    boolean value is represented by a value of the type
85    :const:`JSON_TRUE` and false by a value of the type
86    :const:`JSON_FALSE`.
87
88 .. cfunction:: int json_typeof(const json_t *json)
89
90    Return the type of the JSON value (a :ctype:`json_type` cast to
91    :ctype:`int`). *json* MUST NOT be *NULL*. This function is actually
92    implemented as a macro for speed.
93
94 .. cfunction:: json_is_object(const json_t *json)
95                json_is_array(const json_t *json)
96                json_is_string(const json_t *json)
97                json_is_integer(const json_t *json)
98                json_is_real(const json_t *json)
99                json_is_true(const json_t *json)
100                json_is_false(const json_t *json)
101                json_is_null(const json_t *json)
102
103    These functions (actually macros) return true (non-zero) for values
104    of the given type, and false (zero) for values of other types and
105    for *NULL*.
106
107 .. cfunction:: json_is_number(const json_t *json)
108
109    Returns true for values of types :const:`JSON_INTEGER` and
110    :const:`JSON_REAL`, and false for other types and for *NULL*.
111
112 .. cfunction:: json_is_boolean(const json_t *json)
113
114    Returns true for types :const:`JSON_TRUE` and :const:`JSON_FALSE`,
115    and false for values of other types and for *NULL*.
116
117
118 .. _apiref-reference-count:
119
120 Reference Count
121 ---------------
122
123 The reference count is used to track whether a value is still in use
124 or not. When a value is created, it's reference count is set to 1. If
125 a reference to a value is kept (e.g. a value is stored somewhere for
126 later use), its reference count is incremented, and when the value is
127 no longer needed, the reference count is decremented. When the
128 reference count drops to zero, there are no references left, and the
129 value can be destroyed.
130
131 The following functions are used to manipulate the reference count.
132
133 .. cfunction:: json_t *json_incref(json_t *json)
134
135    Increment the reference count of *json* if it's not non-*NULL*.
136    Returns *json*.
137
138 .. cfunction:: void json_decref(json_t *json)
139
140    Decrement the reference count of *json*. As soon as a call to
141    :cfunc:`json_decref()` drops the reference count to zero, the value
142    is destroyed and it can no longer be used.
143
144 Functions creating new JSON values set the reference count to 1. These
145 functions are said to return a **new reference**. Other functions
146 returning (existing) JSON values do not normally increase the
147 reference count. These functions are said to return a **borrowed
148 reference**. So, if the user will hold a reference to a value returned
149 as a borrowed reference, he must call :cfunc:`json_incref`. As soon as
150 the value is no longer needed, :cfunc:`json_decref` should be called
151 to release the reference.
152
153 Normally, all functions accepting a JSON value as an argument will
154 manage the reference, i.e. increase and decrease the reference count
155 as needed. However, some functions **steal** the reference, i.e. they
156 have the same result as if the user called :cfunc:`json_decref()` on
157 the argument right after calling the function. These functions are
158 suffixed with ``_new`` or have ``_new_`` somewhere in their name.
159
160 For example, the following code creates a new JSON array and appends
161 an integer to it::
162
163   json_t *array, *integer;
164
165   array = json_array();
166   integer = json_integer(42);
167
168   json_array_append(array, integer);
169   json_decref(integer);
170
171 Note how the caller has to release the reference to the integer value
172 by calling :cfunc:`json_decref()`. By using a reference stealing
173 function :cfunc:`json_array_append_new()` instead of
174 :cfunc:`json_array_append()`, the code becomes much simpler::
175
176   json_t *array = json_array();
177   json_array_append_new(array, json_integer(42));
178
179 In this case, the user doesn't have to explicitly release the
180 reference to the integer value, as :cfunc:`json_array_append_new()`
181 steals the reference when appending the value to the array.
182
183 In the following sections it is clearly documented whether a function
184 will return a new or borrowed reference or steal a reference to its
185 argument.
186
187
188 Circular References
189 -------------------
190
191 A circular reference is created when an object or an array is,
192 directly or indirectly, inserted inside itself. The direct case is
193 simple::
194
195   json_t *obj = json_object();
196   json_object_set(obj, "foo", obj);
197
198 Jansson will refuse to do this, and :cfunc:`json_object_set()` (and
199 all the other such functions for objects and arrays) will return with
200 an error status. The indirect case is the dangerous one::
201
202   json_t *arr1 = json_array(), *arr2 = json_array();
203   json_array_append(arr1, arr2);
204   json_array_append(arr2, arr1);
205
206 In this example, the array ``arr2`` is contained in the array
207 ``arr1``, and vice versa. Jansson cannot check for this kind of
208 indirect circular references without a performance hit, so it's up to
209 the user to avoid them.
210
211 If a circular reference is created, the memory consumed by the values
212 cannot be freed by :cfunc:`json_decref()`. The reference counts never
213 drops to zero because the values are keeping the references to each
214 other. Moreover, trying to encode the values with any of the encoding
215 functions will fail. The encoder detects circular references and
216 returns an error status.
217
218
219 True, False and Null
220 ====================
221
222 These values are implemented as singletons, so each of these functions
223 returns the same value each time.
224
225 .. cfunction:: json_t *json_true(void)
226
227    .. refcounting:: new
228
229    Returns the JSON true value.
230
231 .. cfunction:: json_t *json_false(void)
232
233    .. refcounting:: new
234
235    Returns the JSON false value.
236
237 .. cfunction:: json_t *json_null(void)
238
239    .. refcounting:: new
240
241    Returns the JSON null value.
242
243
244 String
245 ======
246
247 Jansson uses UTF-8 as the character encoding. All JSON strings must be
248 valid UTF-8 (or ASCII, as it's a subset of UTF-8). Normal null
249 terminated C strings are used, so JSON strings may not contain
250 embedded null characters. All other Unicode codepoints U+0001 through
251 U+10FFFF are allowed.
252
253 .. cfunction:: json_t *json_string(const char *value)
254
255    .. refcounting:: new
256
257    Returns a new JSON string, or *NULL* on error. *value* must be a
258    valid UTF-8 encoded Unicode string.
259
260 .. cfunction:: json_t *json_string_nocheck(const char *value)
261
262    .. refcounting:: new
263
264    Like :cfunc:`json_string`, but doesn't check that *value* is valid
265    UTF-8. Use this function only if you are certain that this really
266    is the case (e.g. you have already checked it by other means).
267
268    .. versionadded:: 1.2
269
270 .. cfunction:: const char *json_string_value(const json_t *string)
271
272    Returns the associated value of *string* as a null terminated UTF-8
273    encoded string, or *NULL* if *string* is not a JSON string.
274
275 .. cfunction:: int json_string_set(const json_t *string, const char *value)
276
277    Sets the associated value of *string* to *value*. *value* must be a
278    valid UTF-8 encoded Unicode string. Returns 0 on success and -1 on
279    error.
280
281    .. versionadded:: 1.1
282
283 .. cfunction:: int json_string_set_nocheck(const json_t *string, const char *value)
284
285    Like :cfunc:`json_string_set`, but doesn't check that *value* is
286    valid UTF-8. Use this function only if you are certain that this
287    really is the case (e.g. you have already checked it by other
288    means).
289
290    .. versionadded:: 1.2
291
292
293 Number
294 ======
295
296 The JSON specification only contains one numeric type, "number". The C
297 programming language has distinct types for integer and floating-point
298 numbers, so for practical reasons Jansson also has distinct types for
299 the two. They are called "integer" and "real", respectively. For more
300 information, see :ref:`rfc-conformance`.
301
302 .. ctype:: json_int_t
303
304    This is the C type that is used to store JSON integer values. It
305    represents the widest integer type available on your system. In
306    practice it's just a typedef of ``long long`` if your compiler
307    supports it, otherwise ``long``.
308
309    Usually, you can safely use plain ``int`` in place of
310    ``json_int_t``, and the implicit C integer conversion handles the
311    rest. Only when you know that you need the full 64-bit range, you
312    should use ``json_int_t`` explicitly.
313
314 ``JSON_INTEGER_IS_LONG_LONG``
315
316    This is a preprocessor variable that holds the value 1 if
317    :ctype:`json_int_t` is ``long long``, and 0 if it's ``long``. It
318    can be used as follows::
319
320        #if JSON_INTEGER_IS_LONG_LONG
321        /* Code specific for long long */
322        #else
323        /* Code specific for long */
324        #endif
325
326 ``JSON_INTEGER_FORMAT``
327
328    This is a macro that expands to a :cfunc:`printf()` conversion
329    specifier that corresponds to :ctype:`json_int_t`, without the
330    leading ``%`` sign, i.e. either ``"lld"`` or ``"ld"``. This macro
331    is required because the actual type of :ctype:`json_int_t` can be
332    either ``long`` or ``long long``, and :cfunc:`printf()` reuiqres
333    different length modifiers for the two.
334
335    Example::
336
337        json_int_t x = 123123123;
338        printf("x is %" JSON_INTEGER_FORMAT "\n", x);
339
340
341 .. cfunction:: json_t *json_integer(json_int_t value)
342
343    .. refcounting:: new
344
345    Returns a new JSON integer, or *NULL* on error.
346
347 .. cfunction:: json_int_t json_integer_value(const json_t *integer)
348
349    Returns the associated value of *integer*, or 0 if *json* is not a
350    JSON integer.
351
352 .. cfunction:: int json_integer_set(const json_t *integer, json_int_t value)
353
354    Sets the associated value of *integer* to *value*. Returns 0 on
355    success and -1 if *integer* is not a JSON integer.
356
357    .. versionadded:: 1.1
358
359 .. cfunction:: json_t *json_real(double value)
360
361    .. refcounting:: new
362
363    Returns a new JSON real, or *NULL* on error.
364
365 .. cfunction:: double json_real_value(const json_t *real)
366
367    Returns the associated value of *real*, or 0.0 if *real* is not a
368    JSON real.
369
370 .. cfunction:: int json_real_set(const json_t *real, double value)
371
372    Sets the associated value of *real* to *value*. Returns 0 on
373    success and -1 if *real* is not a JSON real.
374
375    .. versionadded:: 1.1
376
377 In addition to the functions above, there's a common query function
378 for integers and reals:
379
380 .. cfunction:: double json_number_value(const json_t *json)
381
382    Returns the associated value of the JSON integer or JSON real
383    *json*, cast to double regardless of the actual type. If *json* is
384    neither JSON real nor JSON integer, 0.0 is returned.
385
386
387 Array
388 =====
389
390 A JSON array is an ordered collection of other JSON values.
391
392 .. cfunction:: json_t *json_array(void)
393
394    .. refcounting:: new
395
396    Returns a new JSON array, or *NULL* on error. Initially, the array
397    is empty.
398
399 .. cfunction:: size_t json_array_size(const json_t *array)
400
401    Returns the number of elements in *array*, or 0 if *array* is NULL
402    or not a JSON array.
403
404 .. cfunction:: json_t *json_array_get(const json_t *array, size_t index)
405
406    .. refcounting:: borrow
407
408    Returns the element in *array* at position *index*. The valid range
409    for *index* is from 0 to the return value of
410    :cfunc:`json_array_size()` minus 1. If *array* is not a JSON array,
411    if *array* is *NULL*, or if *index* is out of range, *NULL* is
412    returned.
413
414 .. cfunction:: int json_array_set(json_t *array, size_t index, json_t *value)
415
416    Replaces the element in *array* at position *index* with *value*.
417    The valid range for *index* is from 0 to the return value of
418    :cfunc:`json_array_size()` minus 1. Returns 0 on success and -1 on
419    error.
420
421 .. cfunction:: int json_array_set_new(json_t *array, size_t index, json_t *value)
422
423    Like :cfunc:`json_array_set()` but steals the reference to *value*.
424    This is useful when *value* is newly created and not used after
425    the call.
426
427    .. versionadded:: 1.1
428
429 .. cfunction:: int json_array_append(json_t *array, json_t *value)
430
431    Appends *value* to the end of *array*, growing the size of *array*
432    by 1. Returns 0 on success and -1 on error.
433
434 .. cfunction:: int json_array_append_new(json_t *array, json_t *value)
435
436    Like :cfunc:`json_array_append()` but steals the reference to
437    *value*. This is useful when *value* is newly created and not used
438    after the call.
439
440    .. versionadded:: 1.1
441
442 .. cfunction:: int json_array_insert(json_t *array, size_t index, json_t *value)
443
444    Inserts *value* to *array* at position *index*, shifting the
445    elements at *index* and after it one position towards the end of
446    the array. Returns 0 on success and -1 on error.
447
448    .. versionadded:: 1.1
449
450 .. cfunction:: int json_array_insert_new(json_t *array, size_t index, json_t *value)
451
452    Like :cfunc:`json_array_insert()` but steals the reference to
453    *value*. This is useful when *value* is newly created and not used
454    after the call.
455
456    .. versionadded:: 1.1
457
458 .. cfunction:: int json_array_remove(json_t *array, size_t index)
459
460    Removes the element in *array* at position *index*, shifting the
461    elements after *index* one position towards the start of the array.
462    Returns 0 on success and -1 on error.
463
464    .. versionadded:: 1.1
465
466 .. cfunction:: int json_array_clear(json_t *array)
467
468    Removes all elements from *array*. Returns 0 on sucess and -1 on
469    error.
470
471    .. versionadded:: 1.1
472
473 .. cfunction:: int json_array_extend(json_t *array, json_t *other_array)
474
475    Appends all elements in *other_array* to the end of *array*.
476    Returns 0 on success and -1 on error.
477
478    .. versionadded:: 1.1
479
480
481 Object
482 ======
483
484 A JSON object is a dictionary of key-value pairs, where the key is a
485 Unicode string and the value is any JSON value.
486
487 .. cfunction:: json_t *json_object(void)
488
489    .. refcounting:: new
490
491    Returns a new JSON object, or *NULL* on error. Initially, the
492    object is empty.
493
494 .. cfunction:: size_t json_object_size(const json_t *object)
495
496    Returns the number of elements in *object*, or 0 if *object* is not
497    a JSON object.
498
499    .. versionadded:: 1.1
500
501 .. cfunction:: json_t *json_object_get(const json_t *object, const char *key)
502
503    .. refcounting:: borrow
504
505    Get a value corresponding to *key* from *object*. Returns *NULL* if
506    *key* is not found and on error.
507
508 .. cfunction:: int json_object_set(json_t *object, const char *key, json_t *value)
509
510    Set the value of *key* to *value* in *object*. *key* must be a
511    valid null terminated UTF-8 encoded Unicode string. If there
512    already is a value for *key*, it is replaced by the new value.
513    Returns 0 on success and -1 on error.
514
515 .. cfunction:: int json_object_set_nocheck(json_t *object, const char *key, json_t *value)
516
517    Like :cfunc:`json_object_set`, but doesn't check that *key* is
518    valid UTF-8. Use this function only if you are certain that this
519    really is the case (e.g. you have already checked it by other
520    means).
521
522    .. versionadded:: 1.2
523
524 .. cfunction:: int json_object_set_new(json_t *object, const char *key, json_t *value)
525
526    Like :cfunc:`json_object_set()` but steals the reference to
527    *value*. This is useful when *value* is newly created and not used
528    after the call.
529
530    .. versionadded:: 1.1
531
532 .. cfunction:: int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value)
533
534    Like :cfunc:`json_object_set_new`, but doesn't check that *key* is
535    valid UTF-8. Use this function only if you are certain that this
536    really is the case (e.g. you have already checked it by other
537    means).
538
539    .. versionadded:: 1.2
540
541 .. cfunction:: int json_object_del(json_t *object, const char *key)
542
543    Delete *key* from *object* if it exists. Returns 0 on success, or
544    -1 if *key* was not found.
545
546
547 .. cfunction:: int json_object_clear(json_t *object)
548
549    Remove all elements from *object*. Returns 0 on success and -1 if
550    *object* is not a JSON object.
551
552    .. versionadded:: 1.1
553
554 .. cfunction:: int json_object_update(json_t *object, json_t *other)
555
556    Update *object* with the key-value pairs from *other*, overwriting
557    existing keys. Returns 0 on success or -1 on error.
558
559    .. versionadded:: 1.1
560
561
562 The following functions implement an iteration protocol for objects:
563
564 .. cfunction:: void *json_object_iter(json_t *object)
565
566    Returns an opaque iterator which can be used to iterate over all
567    key-value pairs in *object*, or *NULL* if *object* is empty.
568
569 .. cfunction:: void *json_object_iter_at(json_t *object, const char *key)
570
571    Like :cfunc:`json_object_iter()`, but returns an iterator to the
572    key-value pair in *object* whose key is equal to *key*, or NULL if
573    *key* is not found in *object*. Iterating forward to the end of
574    *object* only yields all key-value pairs of the object if *key*
575    happens to be the first key in the underlying hash table.
576
577    .. versionadded:: 1.3
578
579 .. cfunction:: void *json_object_iter_next(json_t *object, void *iter)
580
581    Returns an iterator pointing to the next key-value pair in *object*
582    after *iter*, or *NULL* if the whole object has been iterated
583    through.
584
585 .. cfunction:: const char *json_object_iter_key(void *iter)
586
587    Extract the associated key from *iter*.
588
589 .. cfunction:: json_t *json_object_iter_value(void *iter)
590
591    .. refcounting:: borrow
592
593    Extract the associated value from *iter*.
594
595 .. cfunction:: int json_object_iter_set(json_t *object, void *iter, json_t *value)
596
597    Set the value of the key-value pair in *object*, that is pointed to
598    by *iter*, to *value*.
599
600    .. versionadded:: 1.3
601
602 .. cfunction:: int json_object_iter_set_new(json_t *object, void *iter, json_t *value)
603
604    Like :cfunc:`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    .. versionadded:: 1.3
609
610 The iteration protocol can be used for example as follows::
611
612    /* obj is a JSON object */
613    const char *key;
614    json_t *value;
615    void *iter = json_object_iter(obj);
616    while(iter)
617    {
618        key = json_object_iter_key(iter);
619        value = json_object_iter_value(iter);
620        /* use key and value ... */
621        iter = json_object_iter_next(obj, iter);
622    }
623
624
625 Encoding
626 ========
627
628 This sections describes the functions that can be used to encode
629 values to JSON. Only objects and arrays can be encoded, since they are
630 the only valid "root" values of a JSON text.
631
632 By default, the output has no newlines, and spaces are used between
633 array and object elements for a readable output. This behavior can be
634 altered by using the ``JSON_INDENT`` and ``JSON_COMPACT`` flags
635 described below. A newline is never appended to the end of the encoded
636 JSON data.
637
638 Each function takes a *flags* parameter that controls some aspects of
639 how the data is encoded. Its default value is 0. The following macros
640 can be ORed together to obtain *flags*.
641
642 ``JSON_INDENT(n)``
643    Pretty-print the result, using newlines between array and object
644    items, and indenting with *n* spaces. The valid range for *n* is
645    between 0 and 32, other values result in an undefined output. If
646    ``JSON_INDENT`` is not used or *n* is 0, no newlines are inserted
647    between array and object items.
648
649 ``JSON_COMPACT``
650    This flag enables a compact representation, i.e. sets the separator
651    between array and object items to ``","`` and between object keys
652    and values to ``":"``. Without this flag, the corresponding
653    separators are ``", "`` and ``": "`` for more readable output.
654
655    .. versionadded:: 1.2
656
657 ``JSON_ENSURE_ASCII``
658    If this flag is used, the output is guaranteed to consist only of
659    ASCII characters. This is achived by escaping all Unicode
660    characters outside the ASCII range.
661
662    .. versionadded:: 1.2
663
664 ``JSON_SORT_KEYS``
665    If this flag is used, all the objects in output are sorted by key.
666    This is useful e.g. if two JSON texts are diffed or visually
667    compared.
668
669    .. versionadded:: 1.2
670
671 ``JSON_PRESERVE_ORDER``
672    If this flag is used, object keys in the output are sorted into the
673    same order in which they were first inserted to the object. For
674    example, decoding a JSON text and then encoding with this flag
675    preserves the order of object keys.
676
677    .. versionadded:: 1.3
678
679 The following functions perform the actual JSON encoding. The result
680 is in UTF-8.
681
682 .. cfunction:: char *json_dumps(const json_t *root, size_t flags)
683
684    Returns the JSON representation of *root* as a string, or *NULL* on
685    error. *flags* is described above. The return value must be freed
686    by the caller using :cfunc:`free()`.
687
688 .. cfunction:: int json_dumpf(const json_t *root, FILE *output, size_t flags)
689
690    Write the JSON representation of *root* to the stream *output*.
691    *flags* is described above. Returns 0 on success and -1 on error.
692    If an error occurs, something may have already been written to
693    *output*. In this case, the output is undefined and most likely not
694    valid JSON.
695
696 .. cfunction:: int json_dump_file(const json_t *json, const char *path, size_t flags)
697
698    Write the JSON representation of *root* to the file *path*. If
699    *path* already exists, it is overwritten. *flags* is described
700    above. Returns 0 on success and -1 on error.
701
702
703 Decoding
704 ========
705
706 This sections describes the functions that can be used to decode JSON
707 text to the Jansson representation of JSON data. The JSON
708 specification requires that a JSON text is either a serialized array
709 or object, and this requirement is also enforced with the following
710 functions. In other words, the top level value in the JSON text being
711 decoded must be either array or object.
712
713 See :ref:`rfc-conformance` for a discussion on Jansson's conformance
714 to the JSON specification. It explains many design decisions that
715 affect especially the behavior of the decoder.
716
717 .. ctype:: json_error_t
718
719    This data structure is used to return information on decoding
720    errors from the decoding functions. Its definition is repeated
721    here::
722
723       #define JSON_ERROR_TEXT_LENGTH  160
724
725       typedef struct {
726           char text[JSON_ERROR_TEXT_LENGTH];
727           int line;
728       } json_error_t;
729
730    *line* is the line number on which the error occurred, or -1 if
731    this information is not available. *text* contains the error
732    message (in UTF-8), or an empty string if a message is not
733    available.
734
735    The normal usef of :ctype:`json_error_t` is to allocate it normally
736    on the stack, and pass a pointer to a decoding function. Example::
737
738       int main() {
739           json_t *json;
740           json_error_t error;
741
742           json = json_load_file("/path/to/file.json", 0, &error);
743           if(!json) {
744               /* the error variable contains error information */
745           }
746           ...
747       }
748
749    Also note that if the decoding succeeded (``json != NULL`` in the
750    above example), the contents of ``error`` are unspecified.
751
752    All decoding functions also accept *NULL* as the
753    :ctype:`json_error_t` pointer, in which case no error information
754    is returned to the caller.
755
756 The following functions perform the actual JSON decoding.
757
758 .. cfunction:: json_t *json_loads(const char *input, size_t flags, json_error_t *error)
759
760    .. refcounting:: new
761
762    Decodes the JSON string *input* and returns the array or object it
763    contains, or *NULL* on error, in which case *error* is filled with
764    information about the error. See above for discussion on the
765    *error* parameter. *flags* is currently unused, and should be set
766    to 0.
767
768 .. cfunction:: json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
769
770    .. refcounting:: new
771
772    Decodes the JSON text in stream *input* and returns the array or
773    object it contains, or *NULL* on error, in which case *error* is
774    filled with information about the error. See above for discussion
775    on the *error* parameter. *flags* is currently unused, and should
776    be set to 0.
777
778 .. cfunction:: json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
779
780    .. refcounting:: new
781
782    Decodes the JSON text in file *path* and returns the array or
783    object it contains, or *NULL* on error, in which case *error* is
784    filled with information about the error. See above for discussion
785    on the *error* parameter. *flags* is currently unused, and should
786    be set to 0.
787
788
789 Equality
790 ========
791
792 Testing for equality of two JSON values cannot, in general, be
793 achieved using the ``==`` operator. Equality in the terms of the
794 ``==`` operator states that the two :ctype:`json_t` pointers point to
795 exactly the same JSON value. However, two JSON values can be equal not
796 only if they are exactly the same value, but also if they have equal
797 "contents":
798
799 * Two integer or real values are equal if their contained numeric
800   values are equal. An integer value is never equal to a real value,
801   though.
802
803 * Two strings are equal if their contained UTF-8 strings are equal,
804   byte by byte. Unicode comparison algorithms are not implemented.
805
806 * Two arrays are equal if they have the same number of elements and
807   each element in the first array is equal to the corresponding
808   element in the second array.
809
810 * Two objects are equal if they have exactly the same keys and the
811   value for each key in the first object is equal to the value of the
812   corresponding key in the second object.
813
814 * Two true, false or null values have no "contents", so they are equal
815   if their types are equal. (Because these values are singletons,
816   their equality can actually be tested with ``==``.)
817
818 The following function can be used to test whether two JSON values are
819 equal.
820
821 .. cfunction:: int json_equal(json_t *value1, json_t *value2)
822
823    Returns 1 if *value1* and *value2* are equal, as defined above.
824    Returns 0 if they are inequal or one or both of the pointers are
825    *NULL*.
826
827    .. versionadded:: 1.2
828
829
830 Copying
831 =======
832
833 Because of reference counting, passing JSON values around doesn't
834 require copying them. But sometimes a fresh copy of a JSON value is
835 needed. For example, if you need to modify an array, but still want to
836 use the original afterwards, you should take a copy of it first.
837
838 Jansson supports two kinds of copying: shallow and deep. There is a
839 difference between these methods only for arrays and objects. Shallow
840 copying only copies the first level value (array or object) and uses
841 the same child values in the copied value. Deep copying makes a fresh
842 copy of the child values, too. Moreover, all the child values are deep
843 copied in a recursive fashion.
844
845 .. cfunction:: json_t *json_copy(json_t *value)
846
847    .. refcounting:: new
848
849    Returns a shallow copy of *value*, or *NULL* on error.
850
851    .. versionadded:: 1.2
852
853 .. cfunction:: json_t *json_deep_copy(json_t *value)
854
855    .. refcounting:: new
856
857    Returns a deep copy of *value*, or *NULL* on error.
858
859    .. versionadded:: 1.2