Add functions json_object_iter_{at,set,set_new}
[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 are usually
158 convenience functions for adding new references to containers and not
159 to worry about the reference count.
160
161 In the following sections it is clearly documented whether a function
162 will return a new or borrowed reference or steal a reference to its
163 argument.
164
165
166 Circular References
167 -------------------
168
169 A circular reference is created when an object or an array is,
170 directly or indirectly, inserted inside itself. The direct case is
171 simple::
172
173   json_t *obj = json_object();
174   json_object_set(obj, "foo", obj);
175
176 Jansson will refuse to do this, and :cfunc:`json_object_set()` (and
177 all the other such functions for objects and arrays) will return with
178 an error status. The indirect case is the dangerous one::
179
180   json_t *arr1 = json_array(), *arr2 = json_array();
181   json_array_append(arr1, arr2);
182   json_array_append(arr2, arr1);
183
184 In this example, the array ``arr2`` is contained in the array
185 ``arr1``, and vice versa. Jansson cannot check for this kind of
186 indirect circular references without a performance hit, so it's up to
187 the user to avoid them.
188
189 If a circular reference is created, the memory consumed by the values
190 cannot be freed by :cfunc:`json_decref()`. The reference counts never
191 drops to zero because the values are keeping the circular reference to
192 themselves. Moreover, trying to encode the values with any of the
193 encoding functions will fail. The encoder detects circular references
194 and returns an error status.
195
196
197 True, False and Null
198 ====================
199
200 These values are implemented as singletons, so each of these functions
201 returns the same value each time.
202
203 .. cfunction:: json_t *json_true(void)
204
205    .. refcounting:: new
206
207    Returns the JSON true value.
208
209 .. cfunction:: json_t *json_false(void)
210
211    .. refcounting:: new
212
213    Returns the JSON false value.
214
215 .. cfunction:: json_t *json_null(void)
216
217    .. refcounting:: new
218
219    Returns the JSON null value.
220
221
222 String
223 ======
224
225 .. cfunction:: json_t *json_string(const char *value)
226
227    .. refcounting:: new
228
229    Returns a new JSON string, or *NULL* on error. *value* must be a
230    valid UTF-8 encoded Unicode string.
231
232 .. cfunction:: json_t *json_string_nocheck(const char *value)
233
234    .. refcounting:: new
235
236    Like :cfunc:`json_string`, but doesn't check that *value* is valid
237    UTF-8. Use this function only if you are certain that this really
238    is the case (e.g. you have already checked it by other means).
239
240    .. versionadded:: 1.2
241
242 .. cfunction:: const char *json_string_value(const json_t *string)
243
244    Returns the associated value of *string* as a null terminated UTF-8
245    encoded string, or *NULL* if *string* is not a JSON string.
246
247 .. cfunction:: int json_string_set(const json_t *string, const char *value)
248
249    Sets the associated value of *string* to *value*. *value* must be a
250    valid UTF-8 encoded Unicode string. Returns 0 on success and -1 on
251    error.
252
253    .. versionadded:: 1.1
254
255 .. cfunction:: int json_string_set_nocheck(const json_t *string, const char *value)
256
257    Like :cfunc:`json_string_set`, but doesn't check that *value* is
258    valid UTF-8. Use this function only if you are certain that this
259    really is the case (e.g. you have already checked it by other
260    means).
261
262    .. versionadded:: 1.2
263
264
265 Number
266 ======
267
268 .. cfunction:: json_t *json_integer(int value)
269
270    .. refcounting:: new
271
272    Returns a new JSON integer, or *NULL* on error.
273
274 .. cfunction:: int json_integer_value(const json_t *integer)
275
276    Returns the associated value of *integer*, or 0 if *json* is not a
277    JSON integer.
278
279 .. cfunction:: int json_integer_set(const json_t *integer, int value)
280
281    Sets the associated value of *integer* to *value*. Returns 0 on
282    success and -1 if *integer* is not a JSON integer.
283
284    .. versionadded:: 1.1
285
286 .. cfunction:: json_t *json_real(double value)
287
288    .. refcounting:: new
289
290    Returns a new JSON real, or *NULL* on error.
291
292 .. cfunction:: double json_real_value(const json_t *real)
293
294    Returns the associated value of *real*, or 0.0 if *real* is not a
295    JSON real.
296
297 .. cfunction:: int json_real_set(const json_t *real, double value)
298
299    Sets the associated value of *real* to *value*. Returns 0 on
300    success and -1 if *real* is not a JSON real.
301
302    .. versionadded:: 1.1
303
304 In addition to the functions above, there's a common query function
305 for integers and reals:
306
307 .. cfunction:: double json_number_value(const json_t *json)
308
309    Returns the associated value of the JSON integer or JSON real
310    *json*, cast to double regardless of the actual type. If *json* is
311    neither JSON real nor JSON integer, 0.0 is returned.
312
313
314 Array
315 =====
316
317 A JSON array is an ordered collection of other JSON values.
318
319 .. cfunction:: json_t *json_array(void)
320
321    .. refcounting:: new
322
323    Returns a new JSON array, or *NULL* on error. Initially, the array
324    is empty.
325
326 .. cfunction:: unsigned int json_array_size(const json_t *array)
327
328    Returns the number of elements in *array*, or 0 if *array* is NULL
329    or not a JSON array.
330
331 .. cfunction:: json_t *json_array_get(const json_t *array, unsigned int index)
332
333    .. refcounting:: borrow
334
335    Returns the element in *array* at position *index*. The valid range
336    for *index* is from 0 to the return value of
337    :cfunc:`json_array_size()` minus 1. If *array* is not a JSON array,
338    if *array* is *NULL*, or if *index* is out of range, *NULL* is
339    returned.
340
341 .. cfunction:: int json_array_set(json_t *array, unsigned int index, json_t *value)
342
343    Replaces the element in *array* at position *index* with *value*.
344    The valid range for *index* is from 0 to the return value of
345    :cfunc:`json_array_size()` minus 1. Returns 0 on success and -1 on
346    error.
347
348 .. cfunction:: int json_array_set_new(json_t *array, unsigned int index, json_t *value)
349
350    Like :cfunc:`json_array_set()` but steals the reference to *value*.
351    This is useful when *value* is newly created and not used after
352    the call.
353
354    .. versionadded:: 1.1
355
356 .. cfunction:: int json_array_append(json_t *array, json_t *value)
357
358    Appends *value* to the end of *array*, growing the size of *array*
359    by 1. Returns 0 on success and -1 on error.
360
361 .. cfunction:: int json_array_append_new(json_t *array, json_t *value)
362
363    Like :cfunc:`json_array_append()` but steals the reference to
364    *value*. This is useful when *value* is newly created and not used
365    after the call.
366
367    .. versionadded:: 1.1
368
369 .. cfunction:: int json_array_insert(json_t *array, unsigned int index, json_t *value)
370
371    Inserts *value* to *array* at position *index*, shifting the
372    elements at *index* and after it one position towards the end of
373    the array. Returns 0 on success and -1 on error.
374
375    .. versionadded:: 1.1
376
377 .. cfunction:: int json_array_insert_new(json_t *array, unsigned int index, json_t *value)
378
379    Like :cfunc:`json_array_insert()` but steals the reference to
380    *value*. This is useful when *value* is newly created and not used
381    after the call.
382
383    .. versionadded:: 1.1
384
385 .. cfunction:: int json_array_remove(json_t *array, unsigned int index)
386
387    Removes the element in *array* at position *index*, shifting the
388    elements after *index* one position towards the start of the array.
389    Returns 0 on success and -1 on error.
390
391    .. versionadded:: 1.1
392
393 .. cfunction:: int json_array_clear(json_t *array)
394
395    Removes all elements from *array*. Returns 0 on sucess and -1 on
396    error.
397
398    .. versionadded:: 1.1
399
400 .. cfunction:: int json_array_extend(json_t *array, json_t *other_array)
401
402    Appends all elements in *other_array* to the end of *array*.
403    Returns 0 on success and -1 on error.
404
405    .. versionadded:: 1.1
406
407
408 Object
409 ======
410
411 A JSON object is a dictionary of key-value pairs, where the key is a
412 Unicode string and the value is any JSON value.
413
414 .. cfunction:: json_t *json_object(void)
415
416    .. refcounting:: new
417
418    Returns a new JSON object, or *NULL* on error. Initially, the
419    object is empty.
420
421 .. cfunction:: unsigned int json_object_size(const json_t *object)
422
423    Returns the number of elements in *object*, or 0 if *object* is not
424    a JSON object.
425
426    .. versionadded:: 1.1
427
428 .. cfunction:: json_t *json_object_get(const json_t *object, const char *key)
429
430    .. refcounting:: borrow
431
432    Get a value corresponding to *key* from *object*. Returns *NULL* if
433    *key* is not found and on error.
434
435 .. cfunction:: int json_object_set(json_t *object, const char *key, json_t *value)
436
437    Set the value of *key* to *value* in *object*. *key* must be a
438    valid null terminated UTF-8 encoded Unicode string. If there
439    already is a value for *key*, it is replaced by the new value.
440    Returns 0 on success and -1 on error.
441
442 .. cfunction:: int json_object_set_nocheck(json_t *object, const char *key, json_t *value)
443
444    Like :cfunc:`json_object_set`, but doesn't check that *key* is
445    valid UTF-8. Use this function only if you are certain that this
446    really is the case (e.g. you have already checked it by other
447    means).
448
449    .. versionadded:: 1.2
450
451 .. cfunction:: int json_object_set_new(json_t *object, const char *key, json_t *value)
452
453    Like :cfunc:`json_object_set()` but steals the reference to
454    *value*. This is useful when *value* is newly created and not used
455    after the call.
456
457    .. versionadded:: 1.1
458
459 .. cfunction:: int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value)
460
461    Like :cfunc:`json_object_set_new`, but doesn't check that *key* is
462    valid UTF-8. Use this function only if you are certain that this
463    really is the case (e.g. you have already checked it by other
464    means).
465
466    .. versionadded:: 1.2
467
468 .. cfunction:: int json_object_del(json_t *object, const char *key)
469
470    Delete *key* from *object* if it exists. Returns 0 on success, or
471    -1 if *key* was not found.
472
473
474 .. cfunction:: int json_object_clear(json_t *object)
475
476    Remove all elements from *object*. Returns 0 on success and -1 if
477    *object* is not a JSON object.
478
479    .. versionadded:: 1.1
480
481 .. cfunction:: int json_object_update(json_t *object, json_t *other)
482
483    Update *object* with the key-value pairs from *other*, overwriting
484    existing keys. Returns 0 on success or -1 on error.
485
486    .. versionadded:: 1.1
487
488
489 The following functions implement an iteration protocol for objects:
490
491 .. cfunction:: void *json_object_iter(json_t *object)
492
493    Returns an opaque iterator which can be used to iterate over all
494    key-value pairs in *object*, or *NULL* if *object* is empty.
495
496 .. cfunction:: void *json_object_iter_at(json_t *object, const char *key)
497
498    Like :cfunc:`json_object_iter()`, but returns an iterator to the
499    key-value pair in *object* whose key is equal to *key*, or NULL if
500    *key* is not found in *object*. Iterating forward to the end of
501    *object* only yields all key-value pairs of the object if *key*
502    happens to be the first key in the underlying hash table.
503
504    .. versionadded:: 1.3
505
506 .. cfunction:: void *json_object_iter_next(json_t *object, void *iter)
507
508    Returns an iterator pointing to the next key-value pair in *object*
509    after *iter*, or *NULL* if the whole object has been iterated
510    through.
511
512 .. cfunction:: const char *json_object_iter_key(void *iter)
513
514    Extract the associated key from *iter*.
515
516 .. cfunction:: json_t *json_object_iter_value(void *iter)
517
518    .. refcounting:: borrow
519
520    Extract the associated value from *iter*.
521
522 .. cfunction:: int json_object_iter_set(json_t *object, void *iter, json_t *value)
523
524    Set the value of the key-value pair in *object*, that is pointed to
525    by *iter*, to *value*.
526
527    .. versionadded:: 1.3
528
529 .. cfunction:: int json_object_iter_set_new(json_t *object, void *iter, json_t *value)
530
531    Like :cfunc:`json_object_iter_set()`, but steals the reference to
532    *value*. This is useful when *value* is newly created and not used
533    after the call.
534
535    .. versionadded:: 1.3
536
537 The iteration protocol can be used for example as follows::
538
539    /* obj is a JSON object */
540    const char *key;
541    json_t *value;
542    void *iter = json_object_iter(obj);
543    while(iter)
544    {
545        key = json_object_iter_key(iter);
546        value = json_object_iter_value(iter);
547        /* use key and value ... */
548        iter = json_object_iter_next(obj, iter);
549    }
550
551
552 Encoding
553 ========
554
555 This sections describes the functions that can be used to encode
556 values to JSON. Only objects and arrays can be encoded, since they are
557 the only valid "root" values of a JSON text.
558
559 By default, the output has no newlines, and spaces are used between
560 array and object elements for a readable output. This behavior can be
561 altered by using the ``JSON_INDENT`` and ``JSON_COMPACT`` flags
562 described below. A newline is never appended to the end of the encoded
563 JSON data.
564
565 Each function takes a *flags* parameter that controls some aspects of
566 how the data is encoded. Its default value is 0. The following macros
567 can be ORed together to obtain *flags*.
568
569 ``JSON_INDENT(n)``
570    Pretty-print the result, using newlines between array and object
571    items, and indenting with *n* spaces. The valid range for *n* is
572    between 0 and 255, other values result in an undefined output. If
573    ``JSON_INDENT`` is not used or *n* is 0, no newlines are inserted
574    between array and object items.
575
576 ``JSON_COMPACT``
577    This flag enables a compact representation, i.e. sets the separator
578    between array and object items to ``","`` and between object keys
579    and values to ``":"``. Without this flag, the corresponding
580    separators are ``", "`` and ``": "`` for more readable output.
581
582    .. versionadded:: 1.2
583
584 ``JSON_ENSURE_ASCII``
585    If this flag is used, the output is guaranteed to consist only of
586    ASCII characters. This is achived by escaping all Unicode
587    characters outside the ASCII range.
588
589    .. versionadded:: 1.2
590
591 ``JSON_SORT_KEYS``
592    If this flag is used, all the objects in output are sorted by key.
593    This is useful e.g. if two JSON texts are diffed or visually
594    compared.
595
596    .. versionadded:: 1.2
597
598 The following functions perform the actual JSON encoding. The result
599 is in UTF-8.
600
601 .. cfunction:: char *json_dumps(const json_t *root, unsigned long flags)
602
603    Returns the JSON representation of *root* as a string, or *NULL* on
604    error. *flags* is described above. The return value must be freed
605    by the caller using :cfunc:`free()`.
606
607 .. cfunction:: int json_dumpf(const json_t *root, FILE *output, unsigned long flags)
608
609    Write the JSON representation of *root* to the stream *output*.
610    *flags* is described above. Returns 0 on success and -1 on error.
611    If an error occurs, something may have already been written to
612    *output*. In this case, the output is undefined and most likely not
613    valid JSON.
614
615 .. cfunction:: int json_dump_file(const json_t *json, const char *path, unsigned long flags)
616
617    Write the JSON representation of *root* to the file *path*. If
618    *path* already exists, it is overwritten. *flags* is described
619    above. Returns 0 on success and -1 on error.
620
621
622 Decoding
623 ========
624
625 This sections describes the functions that can be used to decode JSON
626 text to the Jansson representation of JSON data. The JSON
627 specification requires that a JSON text is either a serialized array
628 or object, and this requirement is also enforced with the following
629 functions.
630
631 The only supported character encoding is UTF-8 (which ASCII is a
632 subset of).
633
634 .. ctype:: json_error_t
635
636    This data structure is used to return information on decoding
637    errors from the decoding functions. Its definition is repeated
638    here::
639
640       #define JSON_ERROR_TEXT_LENGTH  160
641
642       typedef struct {
643           char text[JSON_ERROR_TEXT_LENGTH];
644           int line;
645       } json_error_t;
646
647    *line* is the line number on which the error occurred, or -1 if
648    this information is not available. *text* contains the error
649    message (in UTF-8), or an empty string if a message is not
650    available.
651
652    The normal usef of :ctype:`json_error_t` is to allocate it normally
653    on the stack, and pass a pointer to a decoding function. Example::
654
655       int main() {
656           json_t *json;
657           json_error_t error;
658
659           json = json_load_file("/path/to/file.json", &error);
660           if(!json) {
661               /* the error variable contains error information */
662           }
663           ...
664       }
665
666    Also note that if the decoding succeeded (``json != NULL`` in the
667    above example), the contents of ``error`` are unspecified.
668
669    All decoding functions also accept *NULL* as the
670    :ctype:`json_error_t` pointer, in which case no error information
671    is returned to the caller.
672
673 The following functions perform the actual JSON decoding.
674
675 .. cfunction:: json_t *json_loads(const char *input, json_error_t *error)
676
677    .. refcounting:: new
678
679    Decodes the JSON string *input* and returns the array or object it
680    contains, or *NULL* on error, in which case *error* is filled with
681    information about the error. See above for discussion on the
682    *error* parameter.
683
684 .. cfunction:: json_t *json_loadf(FILE *input, json_error_t *error)
685
686    .. refcounting:: new
687
688    Decodes the JSON text in stream *input* and returns the array or
689    object it contains, or *NULL* on error, in which case *error* is
690    filled with information about the error. See above for discussion
691    on the *error* parameter.
692
693 .. cfunction:: json_t *json_load_file(const char *path, json_error_t *error)
694
695    .. refcounting:: new
696
697    Decodes the JSON text in file *path* and returns the array or
698    object it contains, or *NULL* on error, in which case *error* is
699    filled with information about the error. See above for discussion
700    on the *error* parameter.
701
702
703 Equality
704 ========
705
706 Testing for equality of two JSON values cannot, in general, be
707 achieved using the ``==`` operator. Equality in the terms of the
708 ``==`` operator states that the two :ctype:`json_t` pointers point to
709 exactly the same JSON value. However, two JSON values can be equal not
710 only if they are exactly the same value, but also if they have equal
711 "contents":
712
713 * Two integer or real values are equal if their contained numeric
714   values are equal. An integer value is never equal to a real value,
715   though.
716
717 * Two strings are equal if their contained UTF-8 strings are equal.
718
719 * Two arrays are equal if they have the same number of elements and
720   each element in the first array is equal to the corresponding
721   element in the second array.
722
723 * Two objects are equal if they have exactly the same keys and the
724   value for each key in the first object is equal to the value of the
725   corresponding key in the second object.
726
727 * Two true, false or null values have no "contents", so they are equal
728   if their types are equal. (Because these values are singletons,
729   their equality can actually be tested with ``==``.)
730
731 The following function can be used to test whether two JSON values are
732 equal.
733
734 .. cfunction:: int json_equal(json_t *value1, json_t *value2)
735
736    Returns 1 if *value1* and *value2* are equal, as defined above.
737    Returns 0 if they are inequal or one or both of the pointers are
738    *NULL*.
739
740    .. versionadded:: 1.2
741
742
743 Copying
744 =======
745
746 Because of reference counting, passing JSON values around doesn't
747 require copying them. But sometimes a fresh copy of a JSON value is
748 needed. For example, if you need to modify an array, but still want to
749 use the original afterwards, you should take a copy of it first.
750
751 Jansson supports two kinds of copying: shallow and deep. There is a
752 difference between these methods only for arrays and objects. Shallow
753 copying only copies the first level value (array or object) and uses
754 the same child values in the copied value. Deep copying makes a fresh
755 copy of the child values, too. Moreover, all the child values are deep
756 copied in a recursive fashion.
757
758 .. cfunction:: json_t *json_copy(json_t *value)
759
760    .. refcounting:: new
761
762    Returns a shallow copy of *value*, or *NULL* on error.
763
764    .. versionadded:: 1.2
765
766 .. cfunction:: json_t *json_deep_copy(json_t *value)
767
768    .. refcounting:: new
769
770    Returns a deep copy of *value*, or *NULL* on error.
771
772    .. versionadded:: 1.2