Merge branch '2.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 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_MAJOR_VERSION``, ``JANSSON_MINOR_VERSION``, ``JANSSON_MICRO_VERSION``
45   Integers specifying the major, minor and micro versions,
46   respectively.
47
48 ``JANSSON_VERSION``
49   A string representation of the current version, e.g. ``"1.2.1"`` or
50   ``"1.3"``.
51
52 ``JANSSON_VERSION_HEX``
53   A 3-byte hexadecimal representation of the version, e.g.
54   ``0x010201`` for version 1.2.1 and ``0x010300`` for version 1.3.
55   This is useful in numeric comparisions, e.g.::
56
57       #if JANSSON_VERSION_HEX >= 0x010300
58       /* Code specific to version 1.3 and above */
59       #endif
60
61
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. The reference count of the
485    removed value is decremented.
486
487 .. function:: int json_array_clear(json_t *array)
488
489    Removes all elements from *array*. Returns 0 on sucess and -1 on
490    error. The reference count of all removed values are decremented.
491
492 .. function:: int json_array_extend(json_t *array, json_t *other_array)
493
494    Appends all elements in *other_array* to the end of *array*.
495    Returns 0 on success and -1 on error.
496
497
498 Object
499 ======
500
501 A JSON object is a dictionary of key-value pairs, where the key is a
502 Unicode string and the value is any JSON value.
503
504 .. function:: json_t *json_object(void)
505
506    .. refcounting:: new
507
508    Returns a new JSON object, or *NULL* on error. Initially, the
509    object is empty.
510
511 .. function:: size_t json_object_size(const json_t *object)
512
513    Returns the number of elements in *object*, or 0 if *object* is not
514    a JSON object.
515
516 .. function:: json_t *json_object_get(const json_t *object, const char *key)
517
518    .. refcounting:: borrow
519
520    Get a value corresponding to *key* from *object*. Returns *NULL* if
521    *key* is not found and on error.
522
523 .. function:: int json_object_set(json_t *object, const char *key, json_t *value)
524
525    Set the value of *key* to *value* in *object*. *key* must be a
526    valid null terminated UTF-8 encoded Unicode string. If there
527    already is a value for *key*, it is replaced by the new value.
528    Returns 0 on success and -1 on error.
529
530 .. function:: int json_object_set_nocheck(json_t *object, const char *key, json_t *value)
531
532    Like :func:`json_object_set`, but doesn't check that *key* is
533    valid UTF-8. Use this function only if you are certain that this
534    really is the case (e.g. you have already checked it by other
535    means).
536
537 .. function:: int json_object_set_new(json_t *object, const char *key, json_t *value)
538
539    Like :func:`json_object_set()` but steals the reference to
540    *value*. This is useful when *value* is newly created and not used
541    after the call.
542
543 .. function:: int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value)
544
545    Like :func:`json_object_set_new`, but doesn't check that *key* is
546    valid UTF-8. Use this function only if you are certain that this
547    really is the case (e.g. you have already checked it by other
548    means).
549
550 .. function:: int json_object_del(json_t *object, const char *key)
551
552    Delete *key* from *object* if it exists. Returns 0 on success, or
553    -1 if *key* was not found. The reference count of the removed value
554    is decremented.
555
556 .. function:: int json_object_clear(json_t *object)
557
558    Remove all elements from *object*. Returns 0 on success and -1 if
559    *object* is not a JSON object. The reference count of all removed
560    values are decremented.
561
562 .. function:: int json_object_update(json_t *object, json_t *other)
563
564    Update *object* with the key-value pairs from *other*, overwriting
565    existing keys. Returns 0 on success or -1 on error.
566
567 .. function:: int json_object_update_existing(json_t *object, json_t *other)
568
569    Like :func:`json_object_update()`, but only the values of existing
570    keys are updated. No new keys are created. Returns 0 on success or
571    -1 on error.
572
573    .. versionadded:: 2.3
574
575 .. function:: int json_object_update_missing(json_t *object, json_t *other)
576
577    Like :func:`json_object_update()`, but only new keys are created.
578    The value of any existing key is not changed. Returns 0 on success
579    or -1 on error.
580
581    .. versionadded:: 2.3
582
583 The following macro can be used to iterate through all key-value pairs
584 in an object.
585
586 .. function:: json_object_foreach(object, key, value)
587
588    Iterate over every key-value pair of ``object``, running the block
589    of code that follows each time with the proper values set to
590    variables ``key`` and ``value``, of types :type:`const char *` and
591    :type:`json_t *` respectively. Example::
592
593        /* obj is a JSON object */
594        const char *key;
595        json_t *value;
596
597        json_object_foreach(obj, key, value) {
598            /* block of code that uses key and value */
599        }
600
601    The items are not returned in any particular order.
602
603    This macro expands to an ordinary ``for`` statement upon
604    preprocessing, so its performance is equivalent to that of
605    hand-written iteration code using the object iteration protocol
606    (see below). The main advantage of this macro is that it abstracts
607    away the complexity behind iteration, and makes for shorter, more
608    concise code.
609
610    .. versionadded:: 2.3
611
612
613 The following functions implement an iteration protocol for objects,
614 allowing to iterate through all key-value pairs in an object. The
615 items are not returned in any particular order, as this would require
616 sorting due to the internal hashtable implementation.
617
618 .. function:: void *json_object_iter(json_t *object)
619
620    Returns an opaque iterator which can be used to iterate over all
621    key-value pairs in *object*, or *NULL* if *object* is empty.
622
623 .. function:: void *json_object_iter_at(json_t *object, const char *key)
624
625    Like :func:`json_object_iter()`, but returns an iterator to the
626    key-value pair in *object* whose key is equal to *key*, or NULL if
627    *key* is not found in *object*. Iterating forward to the end of
628    *object* only yields all key-value pairs of the object if *key*
629    happens to be the first key in the underlying hash table.
630
631 .. function:: void *json_object_iter_next(json_t *object, void *iter)
632
633    Returns an iterator pointing to the next key-value pair in *object*
634    after *iter*, or *NULL* if the whole object has been iterated
635    through.
636
637 .. function:: const char *json_object_iter_key(void *iter)
638
639    Extract the associated key from *iter*.
640
641 .. function:: json_t *json_object_iter_value(void *iter)
642
643    .. refcounting:: borrow
644
645    Extract the associated value from *iter*.
646
647 .. function:: int json_object_iter_set(json_t *object, void *iter, json_t *value)
648
649    Set the value of the key-value pair in *object*, that is pointed to
650    by *iter*, to *value*.
651
652 .. function:: int json_object_iter_set_new(json_t *object, void *iter, json_t *value)
653
654    Like :func:`json_object_iter_set()`, but steals the reference to
655    *value*. This is useful when *value* is newly created and not used
656    after the call.
657
658 .. function:: void *json_object_key_to_iter(const char *key)
659
660    Like :func:`json_object_iter_at()`, but much faster. Only works for
661    values returned by :func:`json_object_iter_key()`. Using other keys
662    will lead to segfaults. This function is used internally to
663    implement :func:`json_object_foreach`.
664
665    .. versionadded:: 2.3
666
667 The iteration protocol can be used for example as follows::
668
669    /* obj is a JSON object */
670    const char *key;
671    json_t *value;
672
673    void *iter = json_object_iter(obj);
674    while(iter)
675    {
676        key = json_object_iter_key(iter);
677        value = json_object_iter_value(iter);
678        /* use key and value ... */
679        iter = json_object_iter_next(obj, iter);
680    }
681
682
683 Error reporting
684 ===============
685
686 Jansson uses a single struct type to pass error information to the
687 user. See sections :ref:`apiref-decoding`, :ref:`apiref-pack` and
688 :ref:`apiref-unpack` for functions that pass error information using
689 this struct.
690
691 .. type:: json_error_t
692
693    .. member:: char text[]
694
695       The error message (in UTF-8), or an empty string if a message is
696       not available.
697
698    .. member:: char source[]
699
700       Source of the error. This can be (a part of) the file name or a
701       special identifier in angle brackers (e.g. ``<string>``).
702
703    .. member:: int line
704
705       The line number on which the error occurred.
706
707    .. member:: int column
708
709       The column on which the error occurred. Note that this is the
710       *character column*, not the byte column, i.e. a multibyte UTF-8
711       character counts as one column.
712
713    .. member:: size_t position
714
715       The position in bytes from the start of the input. This is
716       useful for debugging Unicode encoding problems.
717
718 The normal use of :type:`json_error_t` is to allocate it on the stack,
719 and pass a pointer to a function. Example::
720
721    int main() {
722        json_t *json;
723        json_error_t error;
724
725        json = json_load_file("/path/to/file.json", 0, &error);
726        if(!json) {
727            /* the error variable contains error information */
728        }
729        ...
730    }
731
732 Also note that if the call succeeded (``json != NULL`` in the above
733 example), the contents of ``error`` are generally left unspecified.
734 The decoding functions write to the ``position`` member also on
735 success. See :ref:`apiref-decoding` for more info.
736
737 All functions also accept *NULL* as the :type:`json_error_t` pointer,
738 in which case no error information is returned to the caller.
739
740
741 Encoding
742 ========
743
744 This sections describes the functions that can be used to encode
745 values to JSON. By default, only objects and arrays can be encoded
746 directly, since they are the only valid *root* values of a JSON text.
747 To encode any JSON value, use the ``JSON_ENCODE_ANY`` flag (see
748 below).
749
750 By default, the output has no newlines, and spaces are used between
751 array and object elements for a readable output. This behavior can be
752 altered by using the ``JSON_INDENT`` and ``JSON_COMPACT`` flags
753 described below. A newline is never appended to the end of the encoded
754 JSON data.
755
756 Each function takes a *flags* parameter that controls some aspects of
757 how the data is encoded. Its default value is 0. The following macros
758 can be ORed together to obtain *flags*.
759
760 ``JSON_INDENT(n)``
761    Pretty-print the result, using newlines between array and object
762    items, and indenting with *n* spaces. The valid range for *n* is
763    between 0 and 31 (inclusive), other values result in an undefined
764    output. If ``JSON_INDENT`` is not used or *n* is 0, no newlines are
765    inserted between array and object items.
766
767 ``JSON_COMPACT``
768    This flag enables a compact representation, i.e. sets the separator
769    between array and object items to ``","`` and between object keys
770    and values to ``":"``. Without this flag, the corresponding
771    separators are ``", "`` and ``": "`` for more readable output.
772
773 ``JSON_ENSURE_ASCII``
774    If this flag is used, the output is guaranteed to consist only of
775    ASCII characters. This is achived by escaping all Unicode
776    characters outside the ASCII range.
777
778 ``JSON_SORT_KEYS``
779    If this flag is used, all the objects in output are sorted by key.
780    This is useful e.g. if two JSON texts are diffed or visually
781    compared.
782
783 ``JSON_PRESERVE_ORDER``
784    If this flag is used, object keys in the output are sorted into the
785    same order in which they were first inserted to the object. For
786    example, decoding a JSON text and then encoding with this flag
787    preserves the order of object keys.
788
789 ``JSON_ENCODE_ANY``
790    Specifying this flag makes it possible to encode any JSON value on
791    its own. Without it, only objects and arrays can be passed as the
792    *root* value to the encoding functions.
793
794    **Note:** Encoding any value may be useful in some scenarios, but
795    it's generally discouraged as it violates strict compatiblity with
796    :rfc:`4627`. If you use this flag, don't expect interoperatibility
797    with other JSON systems.
798
799    .. versionadded:: 2.1
800
801 ``JSON_ESCAPE_SLASH``
802    Escape the ``/`` characters in strings with ``\/``.
803
804    .. versionadded:: 2.4
805
806 The following functions perform the actual JSON encoding. The result
807 is in UTF-8.
808
809 .. function:: char *json_dumps(const json_t *root, size_t flags)
810
811    Returns the JSON representation of *root* as a string, or *NULL* on
812    error. *flags* is described above. The return value must be freed
813    by the caller using :func:`free()`.
814
815 .. function:: int json_dumpf(const json_t *root, FILE *output, size_t flags)
816
817    Write the JSON representation of *root* to the stream *output*.
818    *flags* is described above. Returns 0 on success and -1 on error.
819    If an error occurs, something may have already been written to
820    *output*. In this case, the output is undefined and most likely not
821    valid JSON.
822
823 .. function:: int json_dump_file(const json_t *json, const char *path, size_t flags)
824
825    Write the JSON representation of *root* to the file *path*. If
826    *path* already exists, it is overwritten. *flags* is described
827    above. Returns 0 on success and -1 on error.
828
829 .. type:: json_dump_callback_t
830
831    A typedef for a function that's called by
832    :func:`json_dump_callback()`::
833
834        typedef int (*json_dump_callback_t)(const char *buffer, size_t size, void *data);
835
836    *buffer* points to a buffer containing a chunk of output, *size* is
837    the length of the buffer, and *data* is the corresponding
838    :func:`json_dump_callback()` argument passed through.
839
840    On error, the function should return -1 to stop the encoding
841    process. On success, it should return 0.
842
843    .. versionadded:: 2.2
844
845 .. function:: int json_dump_callback(const json_t *json, json_dump_callback_t callback, void *data, size_t flags)
846
847    Call *callback* repeatedly, passing a chunk of the JSON
848    representation of *root* each time. *flags* is described above.
849    Returns 0 on success and -1 on error.
850
851    .. versionadded:: 2.2
852
853
854 .. _apiref-decoding:
855
856 Decoding
857 ========
858
859 This sections describes the functions that can be used to decode JSON
860 text to the Jansson representation of JSON data. The JSON
861 specification requires that a JSON text is either a serialized array
862 or object, and this requirement is also enforced with the following
863 functions. In other words, the top level value in the JSON text being
864 decoded must be either array or object. To decode any JSON value, use
865 the ``JSON_DECODE_ANY`` flag (see below).
866
867 See :ref:`rfc-conformance` for a discussion on Jansson's conformance
868 to the JSON specification. It explains many design decisions that
869 affect especially the behavior of the decoder.
870
871 Each function takes a *flags* parameter that can be used to control
872 the behavior of the decoder. Its default value is 0. The following
873 macros can be ORed together to obtain *flags*.
874
875 ``JSON_REJECT_DUPLICATES``
876    Issue a decoding error if any JSON object in the input text
877    contains duplicate keys. Without this flag, the value of the last
878    occurence of each key ends up in the result. Key equivalence is
879    checked byte-by-byte, without special Unicode comparison
880    algorithms.
881
882    .. versionadded:: 2.1
883
884 ``JSON_DECODE_ANY``
885    By default, the decoder expects an array or object as the input.
886    With this flag enabled, the decoder accepts any valid JSON value.
887
888    **Note:** Decoding any value may be useful in some scenarios, but
889    it's generally discouraged as it violates strict compatiblity with
890    :rfc:`4627`. If you use this flag, don't expect interoperatibility
891    with other JSON systems.
892
893    .. versionadded:: 2.3
894
895 ``JSON_DISABLE_EOF_CHECK``
896    By default, the decoder expects that its whole input constitutes a
897    valid JSON text, and issues an error if there's extra data after
898    the otherwise valid JSON input. With this flag enabled, the decoder
899    stops after decoding a valid JSON array or object, and thus allows
900    extra data after the JSON text.
901
902    Normally, reading will stop when the last ``]`` or ``}`` in the
903    JSON input is encountered. If both ``JSON_DISABLE_EOF_CHECK`` and
904    ``JSON_DECODE_ANY`` flags are used, the decoder may read one extra
905    UTF-8 code unit (up to 4 bytes of input). For example, decoding
906    ``4true`` correctly decodes the integer 4, but also reads the
907    ``t``. For this reason, if reading multiple consecutive values that
908    are not arrays or objects, they should be separated by at least one
909    whitespace character.
910
911    .. versionadded:: 2.1
912
913 Each function also takes an optional :type:`json_error_t` parameter
914 that is filled with error information if decoding fails. It's also
915 updated on success; the number of bytes of input read is written to
916 its ``position`` field. This is especially useful when using
917 ``JSON_DISABLE_EOF_CHECK`` to read multiple consecutive JSON texts.
918
919 .. versionadded:: 2.3
920    Number of bytes of input read is written to the ``position`` field
921    of the :type:`json_error_t` structure.
922
923 If no error or position information is needed, you can pass *NULL*.
924
925 The following functions perform the actual JSON decoding.
926
927 .. function:: json_t *json_loads(const char *input, size_t flags, json_error_t *error)
928
929    .. refcounting:: new
930
931    Decodes the JSON string *input* and returns the array or object it
932    contains, or *NULL* on error, in which case *error* is filled with
933    information about the error. *flags* is described above.
934
935 .. function:: json_t *json_loadb(const char *buffer, size_t buflen, size_t flags, json_error_t *error)
936
937    .. refcounting:: new
938
939    Decodes the JSON string *buffer*, whose length is *buflen*, and
940    returns the array or object it contains, or *NULL* on error, in
941    which case *error* is filled with information about the error. This
942    is similar to :func:`json_loads()` except that the string doesn't
943    need to be null-terminated. *flags* is described above.
944
945    .. versionadded:: 2.1
946
947 .. function:: json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
948
949    .. refcounting:: new
950
951    Decodes the JSON text in stream *input* and returns the array or
952    object it contains, or *NULL* on error, in which case *error* is
953    filled with information about the error. *flags* is described
954    above.
955
956    This function will start reading the input from whatever position
957    the input file was, without attempting to seek first. If an error
958    occurs, the file position will be left indeterminate. On success,
959    the file position will be at EOF, unless ``JSON_DISABLE_EOF_CHECK``
960    flag was used. In this case, the file position will be at the first
961    character after the last ``]`` or ``}`` in the JSON input. This
962    allows calling :func:`json_loadf()` on the same ``FILE`` object
963    multiple times, if the input consists of consecutive JSON texts,
964    possibly separated by whitespace.
965
966 .. function:: json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
967
968    .. refcounting:: new
969
970    Decodes the JSON text in file *path* and returns the array or
971    object it contains, or *NULL* on error, in which case *error* is
972    filled with information about the error. *flags* is described
973    above.
974
975 .. type:: json_load_callback_t
976
977    A typedef for a function that's called by
978    :func:`json_load_callback()` to read a chunk of input data::
979
980        typedef size_t (*json_load_callback_t)(void *buffer, size_t buflen, void *data);
981
982    *buffer* points to a buffer of *buflen* bytes, and *data* is the
983    corresponding :func:`json_load_callback()` argument passed through.
984
985    On error, the function should return ``(size_t)-1`` to abort the
986    decoding process. When there's no data left, it should return 0 to
987    report that the end of input has been reached.
988
989    .. versionadded:: 2.4
990
991 .. function:: json_t *json_load_callback(json_load_callback_t callback, void *data, size_t flags, json_error_t *error)
992
993    .. refcounting:: new
994
995    Decodes the JSON text produced by repeated calls to *callback*, and
996    returns the array or object it contains, or *NULL* on error, in
997    which case *error* is filled with information about the error.
998    *data* is passed through to *callback* on each call. *flags* is
999    described above.
1000
1001    .. versionadded:: 2.4
1002
1003
1004 .. _apiref-pack:
1005
1006 Building Values
1007 ===============
1008
1009 This section describes functions that help to create, or *pack*,
1010 complex JSON values, especially nested objects and arrays. Value
1011 building is based on a *format string* that is used to tell the
1012 functions about the expected arguments.
1013
1014 For example, the format string ``"i"`` specifies a single integer
1015 value, while the format string ``"[ssb]"`` or the equivalent ``"[s, s,
1016 b]"`` specifies an array value with two strings and a boolean as its
1017 items::
1018
1019     /* Create the JSON integer 42 */
1020     json_pack("i", 42);
1021
1022     /* Create the JSON array ["foo", "bar", true] */
1023     json_pack("[ssb]", "foo", "bar", 1);
1024
1025 Here's the full list of format characters. The type in parentheses
1026 denotes the resulting JSON type, and the type in brackets (if any)
1027 denotes the C type that is expected as the corresponding argument.
1028
1029 ``s`` (string) [const char \*]
1030     Convert a NULL terminated UTF-8 string to a JSON string.
1031
1032 ``n`` (null)
1033     Output a JSON null value. No argument is consumed.
1034
1035 ``b`` (boolean) [int]
1036     Convert a C :type:`int` to JSON boolean value. Zero is converted
1037     to ``false`` and non-zero to ``true``.
1038
1039 ``i`` (integer) [int]
1040     Convert a C :type:`int` to JSON integer.
1041
1042 ``I`` (integer) [json_int_t]
1043     Convert a C :type:`json_int_t` to JSON integer.
1044
1045 ``f`` (real) [double]
1046     Convert a C :type:`double` to JSON real.
1047
1048 ``o`` (any value) [json_t \*]
1049     Output any given JSON value as-is. If the value is added to an
1050     array or object, the reference to the value passed to ``o`` is
1051     stolen by the container.
1052
1053 ``O`` (any value) [json_t \*]
1054     Like ``o``, but the argument's reference count is incremented.
1055     This is useful if you pack into an array or object and want to
1056     keep the reference for the JSON value consumed by ``O`` to
1057     yourself.
1058
1059 ``[fmt]`` (array)
1060     Build an array with contents from the inner format string. ``fmt``
1061     may contain objects and arrays, i.e. recursive value building is
1062     supported.
1063
1064 ``{fmt}`` (object)
1065     Build an object with contents from the inner format string
1066     ``fmt``. The first, third, etc. format character represent a key,
1067     and must be ``s`` (as object keys are always strings). The second,
1068     fourth, etc. format character represent a value. Any value may be
1069     an object or array, i.e. recursive value building is supported.
1070
1071 Whitespace, ``:`` and ``,`` are ignored.
1072
1073 The following functions compose the value building API:
1074
1075 .. function:: json_t *json_pack(const char *fmt, ...)
1076
1077    .. refcounting:: new
1078
1079    Build a new JSON value according to the format string *fmt*. For
1080    each format character (except for ``{}[]n``), one argument is
1081    consumed and used to build the corresponding value. Returns *NULL*
1082    on error.
1083
1084 .. function:: json_t *json_pack_ex(json_error_t *error, size_t flags, const char *fmt, ...)
1085               json_t *json_vpack_ex(json_error_t *error, size_t flags, const char *fmt, va_list ap)
1086
1087    .. refcounting:: new
1088
1089    Like :func:`json_pack()`, but an in the case of an error, an error
1090    message is written to *error*, if it's not *NULL*. The *flags*
1091    parameter is currently unused and should be set to 0.
1092
1093    As only the errors in format string (and out-of-memory errors) can
1094    be caught by the packer, these two functions are most likely only
1095    useful for debugging format strings.
1096
1097 More examples::
1098
1099   /* Build an empty JSON object */
1100   json_pack("{}");
1101
1102   /* Build the JSON object {"foo": 42, "bar": 7} */
1103   json_pack("{sisi}", "foo", 42, "bar", 7);
1104
1105   /* Like above, ':', ',' and whitespace are ignored */
1106   json_pack("{s:i, s:i}", "foo", 42, "bar", 7);
1107
1108   /* Build the JSON array [[1, 2], {"cool": true}] */
1109   json_pack("[[i,i],{s:b}]", 1, 2, "cool", 1);
1110
1111
1112 .. _apiref-unpack:
1113
1114 Parsing and Validating Values
1115 =============================
1116
1117 This sectinon describes functions that help to validate complex values
1118 and extract, or *unpack*, data from them. Like :ref:`building values
1119 <apiref-pack>`, this is also based on format strings.
1120
1121 While a JSON value is unpacked, the type specified in the format
1122 string is checked to match that of the JSON value. This is the
1123 validation part of the process. In addition to this, the unpacking
1124 functions can also check that all items of arrays and objects are
1125 unpacked. This check be enabled with the format character ``!`` or by
1126 using the flag ``JSON_STRICT``. See below for details.
1127
1128 Here's the full list of format characters. The type in parentheses
1129 denotes the JSON type, and the type in brackets (if any) denotes the C
1130 type whose address should be passed.
1131
1132 ``s`` (string) [const char \*]
1133     Convert a JSON string to a pointer to a NULL terminated UTF-8
1134     string. The resulting string is extracted by using
1135     :func:`json_string_value()` internally, so it exists as long as
1136     there are still references to the corresponding JSON string.
1137
1138 ``n`` (null)
1139     Expect a JSON null value. Nothing is extracted.
1140
1141 ``b`` (boolean) [int]
1142     Convert a JSON boolean value to a C :type:`int`, so that ``true``
1143     is converted to 1 and ``false`` to 0.
1144
1145 ``i`` (integer) [int]
1146     Convert a JSON integer to C :type:`int`.
1147
1148 ``I`` (integer) [json_int_t]
1149     Convert a JSON integer to C :type:`json_int_t`.
1150
1151 ``f`` (real) [double]
1152     Convert a JSON real to C :type:`double`.
1153
1154 ``F`` (integer or real) [double]
1155     Convert a JSON number (integer or real) to C :type:`double`.
1156
1157 ``o`` (any value) [json_t \*]
1158     Store a JSON value with no conversion to a :type:`json_t` pointer.
1159
1160 ``O`` (any value) [json_t \*]
1161     Like ``O``, but the JSON value's reference count is incremented.
1162
1163 ``[fmt]`` (array)
1164     Convert each item in the JSON array according to the inner format
1165     string. ``fmt`` may contain objects and arrays, i.e. recursive
1166     value extraction is supporetd.
1167
1168 ``{fmt}`` (object)
1169     Convert each item in the JSON object according to the inner format
1170     string ``fmt``. The first, third, etc. format character represent
1171     a key, and must be ``s``. The corresponding argument to unpack
1172     functions is read as the object key. The second fourth, etc.
1173     format character represent a value and is written to the address
1174     given as the corresponding argument. **Note** that every other
1175     argument is read from and every other is written to.
1176
1177     ``fmt`` may contain objects and arrays as values, i.e. recursive
1178     value extraction is supporetd.
1179
1180     .. versionadded:: 2.3
1181        Any ``s`` representing a key may be suffixed with a ``?`` to
1182        make the key optional. If the key is not found, nothing is
1183        extracted. See below for an example.
1184
1185 ``!``
1186     This special format character is used to enable the check that
1187     all object and array items are accessed, on a per-value basis. It
1188     must appear inside an array or object as the last format character
1189     before the closing bracket or brace. To enable the check globally,
1190     use the ``JSON_STRICT`` unpacking flag.
1191
1192 ``*``
1193     This special format character is the opposite of ``!``. If the
1194     ``JSON_STRICT`` flag is used, ``*`` can be used to disable the
1195     strict check on a per-value basis. It must appear inside an array
1196     or object as the last format character before the closing bracket
1197     or brace.
1198
1199 Whitespace, ``:`` and ``,`` are ignored.
1200
1201 The following functions compose the parsing and validation API:
1202
1203 .. function:: int json_unpack(json_t *root, const char *fmt, ...)
1204
1205    Validate and unpack the JSON value *root* according to the format
1206    string *fmt*. Returns 0 on success and -1 on failure.
1207
1208 .. function:: int json_unpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, ...)
1209               int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, va_list ap)
1210
1211    Validate and unpack the JSON value *root* according to the format
1212    string *fmt*. If an error occurs and *error* is not *NULL*, write
1213    error information to *error*. *flags* can be used to control the
1214    behaviour of the unpacker, see below for the flags. Returns 0 on
1215    success and -1 on failure.
1216
1217 .. note::
1218
1219    The first argument of all unpack functions is ``json_t *root``
1220    instead of ``const json_t *root``, because the use of ``O`` format
1221    character causes the reference count of ``root``, or some value
1222    reachable from ``root``, to be increased. Furthermore, the ``o``
1223    format character may be used to extract a value as-is, which allows
1224    modifying the structure or contents of a value reachable from
1225    ``root``.
1226
1227    If the ``O`` and ``o`` format character are not used, it's
1228    perfectly safe to cast a ``const json_t *`` variable to plain
1229    ``json_t *`` when used with these functions.
1230
1231 The following unpacking flags are available:
1232
1233 ``JSON_STRICT``
1234     Enable the extra validation step checking that all object and
1235     array items are unpacked. This is equivalent to appending the
1236     format character ``!`` to the end of every array and object in the
1237     format string.
1238
1239 ``JSON_VALIDATE_ONLY``
1240     Don't extract any data, just validate the JSON value against the
1241     given format string. Note that object keys must still be specified
1242     after the format string.
1243
1244 Examples::
1245
1246     /* root is the JSON integer 42 */
1247     int myint;
1248     json_unpack(root, "i", &myint);
1249     assert(myint == 42);
1250
1251     /* root is the JSON object {"foo": "bar", "quux": true} */
1252     const char *str;
1253     int boolean;
1254     json_unpack(root, "{s:s, s:b}", "foo", &str, "quux", &boolean);
1255     assert(strcmp(str, "bar") == 0 && boolean == 1);
1256
1257     /* root is the JSON array [[1, 2], {"baz": null} */
1258     json_error_t error;
1259     json_unpack_ex(root, &error, JSON_VALIDATE_ONLY, "[[i,i], {s:n}]", "baz");
1260     /* returns 0 for validation success, nothing is extracted */
1261
1262     /* root is the JSON array [1, 2, 3, 4, 5] */
1263     int myint1, myint2;
1264     json_unpack(root, "[ii!]", &myint1, &myint2);
1265     /* returns -1 for failed validation */
1266
1267     /* root is an empty JSON object */
1268     int myint = 0, myint2 = 0;
1269     json_unpack(root, "{s?i, s?[ii]}",
1270                 "foo", &myint1,
1271                 "bar", &myint2, &myint3);
1272     /* myint1, myint2 or myint3 is no touched as "foo" and "bar" don't exist */
1273
1274
1275 Equality
1276 ========
1277
1278 Testing for equality of two JSON values cannot, in general, be
1279 achieved using the ``==`` operator. Equality in the terms of the
1280 ``==`` operator states that the two :type:`json_t` pointers point to
1281 exactly the same JSON value. However, two JSON values can be equal not
1282 only if they are exactly the same value, but also if they have equal
1283 "contents":
1284
1285 * Two integer or real values are equal if their contained numeric
1286   values are equal. An integer value is never equal to a real value,
1287   though.
1288
1289 * Two strings are equal if their contained UTF-8 strings are equal,
1290   byte by byte. Unicode comparison algorithms are not implemented.
1291
1292 * Two arrays are equal if they have the same number of elements and
1293   each element in the first array is equal to the corresponding
1294   element in the second array.
1295
1296 * Two objects are equal if they have exactly the same keys and the
1297   value for each key in the first object is equal to the value of the
1298   corresponding key in the second object.
1299
1300 * Two true, false or null values have no "contents", so they are equal
1301   if their types are equal. (Because these values are singletons,
1302   their equality can actually be tested with ``==``.)
1303
1304 The following function can be used to test whether two JSON values are
1305 equal.
1306
1307 .. function:: int json_equal(json_t *value1, json_t *value2)
1308
1309    Returns 1 if *value1* and *value2* are equal, as defined above.
1310    Returns 0 if they are inequal or one or both of the pointers are
1311    *NULL*.
1312
1313
1314 Copying
1315 =======
1316
1317 Because of reference counting, passing JSON values around doesn't
1318 require copying them. But sometimes a fresh copy of a JSON value is
1319 needed. For example, if you need to modify an array, but still want to
1320 use the original afterwards, you should take a copy of it first.
1321
1322 Jansson supports two kinds of copying: shallow and deep. There is a
1323 difference between these methods only for arrays and objects. Shallow
1324 copying only copies the first level value (array or object) and uses
1325 the same child values in the copied value. Deep copying makes a fresh
1326 copy of the child values, too. Moreover, all the child values are deep
1327 copied in a recursive fashion.
1328
1329 .. function:: json_t *json_copy(json_t *value)
1330
1331    .. refcounting:: new
1332
1333    Returns a shallow copy of *value*, or *NULL* on error.
1334
1335 .. function:: json_t *json_deep_copy(json_t *value)
1336
1337    .. refcounting:: new
1338
1339    Returns a deep copy of *value*, or *NULL* on error.
1340
1341
1342 .. _apiref-custom-memory-allocation:
1343
1344 Custom Memory Allocation
1345 ========================
1346
1347 By default, Jansson uses :func:`malloc()` and :func:`free()` for
1348 memory allocation. These functions can be overridden if custom
1349 behavior is needed.
1350
1351 .. type:: json_malloc_t
1352
1353    A typedef for a function pointer with :func:`malloc()`'s
1354    signature::
1355
1356        typedef void *(*json_malloc_t)(size_t);
1357
1358 .. type:: json_free_t
1359
1360    A typedef for a function pointer with :func:`free()`'s
1361    signature::
1362
1363        typedef void (*json_free_t)(void *);
1364
1365 .. function:: void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn)
1366
1367    Use *malloc_fn* instead of :func:`malloc()` and *free_fn* instead
1368    of :func:`free()`. This function has to be called before any other
1369    Jansson's API functions to ensure that all memory operations use
1370    the same functions.
1371
1372 Examples:
1373
1374 Use the `Boehm's conservative garbage collector`_ for memory
1375 operations::
1376
1377     json_set_alloc_funcs(GC_malloc, GC_free);
1378
1379 .. _Boehm's conservative garbage collector: http://www.hpl.hp.com/personal/Hans_Boehm/gc/
1380
1381 Allow storing sensitive data (e.g. passwords or encryption keys) in
1382 JSON structures by zeroing all memory when freed::
1383
1384     static void *secure_malloc(size_t size)
1385     {
1386         /* Store the memory area size in the beginning of the block */
1387         void *ptr = malloc(size + 8);
1388         *((size_t *)ptr) = size;
1389         return ptr + 8;
1390     }
1391
1392     static void secure_free(void *ptr)
1393     {
1394         size_t size;
1395
1396         ptr -= 8;
1397         size = *((size_t *)ptr);
1398
1399         guaranteed_memset(ptr, 0, size);
1400         free(ptr);
1401     }
1402
1403     int main()
1404     {
1405         json_set_alloc_funcs(secure_malloc, secure_free);
1406         /* ... */
1407     }
1408
1409 For more information about the issues of storing sensitive data in
1410 memory, see
1411 http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/protect-secrets.html.
1412 The page also explains the :func:`guaranteed_memset()` function used
1413 in the example and gives a sample implementation for it.