12 All declarations are in :file:`jansson.h`, so it's enough to
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.
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*.
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
41 The following preprocessor constants specify the current version of
44 ``JANSSON_VERSION_MAJOR``, ``JANSSON_VERSION_MINOR``, ``JANSSON_VERSION_MICRO``
45 Integers specifying the major, minor and micro versions,
49 A string representation of the current version, e.g. ``"1.2.1"`` or
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.::
57 #if JANSSON_VERSION_HEX >= 0x010300
58 /* Code specific to version 1.3 and above */
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.
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
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.
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
93 The type of a JSON value is queried and tested using the following
96 .. type:: enum json_type
98 The type of a JSON value. The following members are defined:
100 +--------------------+
102 +--------------------+
104 +--------------------+
106 +--------------------+
108 +--------------------+
110 +--------------------+
112 +--------------------+
114 +--------------------+
116 +--------------------+
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``.
124 .. function:: int json_typeof(const json_t *json)
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.
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)
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
143 .. function:: json_is_number(const json_t *json)
145 Returns true for values of types ``JSON_INTEGER`` and
146 ``JSON_REAL``, and false for other types and for *NULL*.
148 .. function:: json_is_boolean(const json_t *json)
150 Returns true for types ``JSON_TRUE`` and ``JSON_FALSE``, and false
151 for values of other types and for *NULL*.
154 .. _apiref-reference-count:
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.
167 The following functions are used to manipulate the reference count.
169 .. function:: json_t *json_incref(json_t *json)
171 Increment the reference count of *json* if it's not non-*NULL*.
174 .. function:: void json_decref(json_t *json)
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.
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.
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.
196 For example, the following code creates a new JSON array and appends
199 json_t *array, *integer;
201 array = json_array();
202 integer = json_integer(42);
204 json_array_append(array, integer);
205 json_decref(integer);
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::
212 json_t *array = json_array();
213 json_array_append_new(array, json_integer(42));
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.
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
227 A circular reference is created when an object or an array is,
228 directly or indirectly, inserted inside itself. The direct case is
231 json_t *obj = json_object();
232 json_object_set(obj, "foo", obj);
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::
238 json_t *arr1 = json_array(), *arr2 = json_array();
239 json_array_append(arr1, arr2);
240 json_array_append(arr2, arr1);
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.
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.
258 These values are implemented as singletons, so each of these functions
259 returns the same value each time.
261 .. function:: json_t *json_true(void)
265 Returns the JSON true value.
267 .. function:: json_t *json_false(void)
271 Returns the JSON false value.
273 .. function:: json_t *json_null(void)
277 Returns the JSON null value.
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.
289 .. function:: json_t *json_string(const char *value)
293 Returns a new JSON string, or *NULL* on error. *value* must be a
294 valid UTF-8 encoded Unicode string.
296 .. function:: json_t *json_string_nocheck(const char *value)
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).
304 .. function:: const char *json_string_value(const json_t *string)
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.
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.
313 .. function:: int json_string_set(const json_t *string, const char *value)
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
319 .. function:: int json_string_set_nocheck(const json_t *string, const char *value)
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
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`.
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``.
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.
348 ``JSON_INTEGER_IS_LONG_LONG``
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::
354 #if JSON_INTEGER_IS_LONG_LONG
355 /* Code specific for long long */
357 /* Code specific for long */
360 ``JSON_INTEGER_FORMAT``
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.
371 json_int_t x = 123123123;
372 printf("x is %" JSON_INTEGER_FORMAT "\n", x);
375 .. function:: json_t *json_integer(json_int_t value)
379 Returns a new JSON integer, or *NULL* on error.
381 .. function:: json_int_t json_integer_value(const json_t *integer)
383 Returns the associated value of *integer*, or 0 if *json* is not a
386 .. function:: int json_integer_set(const json_t *integer, json_int_t value)
388 Sets the associated value of *integer* to *value*. Returns 0 on
389 success and -1 if *integer* is not a JSON integer.
391 .. function:: json_t *json_real(double value)
395 Returns a new JSON real, or *NULL* on error.
397 .. function:: double json_real_value(const json_t *real)
399 Returns the associated value of *real*, or 0.0 if *real* is not a
402 .. function:: int json_real_set(const json_t *real, double value)
404 Sets the associated value of *real* to *value*. Returns 0 on
405 success and -1 if *real* is not a JSON real.
407 In addition to the functions above, there's a common query function
408 for integers and reals:
410 .. function:: double json_number_value(const json_t *json)
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.
420 A JSON array is an ordered collection of other JSON values.
422 .. function:: json_t *json_array(void)
426 Returns a new JSON array, or *NULL* on error. Initially, the array
429 .. function:: size_t json_array_size(const json_t *array)
431 Returns the number of elements in *array*, or 0 if *array* is NULL
434 .. function:: json_t *json_array_get(const json_t *array, size_t index)
436 .. refcounting:: borrow
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
444 .. function:: int json_array_set(json_t *array, size_t index, json_t *value)
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
451 .. function:: int json_array_set_new(json_t *array, size_t index, json_t *value)
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
457 .. function:: int json_array_append(json_t *array, json_t *value)
459 Appends *value* to the end of *array*, growing the size of *array*
460 by 1. Returns 0 on success and -1 on error.
462 .. function:: int json_array_append_new(json_t *array, json_t *value)
464 Like :func:`json_array_append()` but steals the reference to
465 *value*. This is useful when *value* is newly created and not used
468 .. function:: int json_array_insert(json_t *array, size_t index, json_t *value)
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.
474 .. function:: int json_array_insert_new(json_t *array, size_t index, json_t *value)
476 Like :func:`json_array_insert()` but steals the reference to
477 *value*. This is useful when *value* is newly created and not used
480 .. function:: int json_array_remove(json_t *array, size_t index)
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.
486 .. function:: int json_array_clear(json_t *array)
488 Removes all elements from *array*. Returns 0 on sucess and -1 on
491 .. function:: int json_array_extend(json_t *array, json_t *other_array)
493 Appends all elements in *other_array* to the end of *array*.
494 Returns 0 on success and -1 on error.
500 A JSON object is a dictionary of key-value pairs, where the key is a
501 Unicode string and the value is any JSON value.
503 .. function:: json_t *json_object(void)
507 Returns a new JSON object, or *NULL* on error. Initially, the
510 .. function:: size_t json_object_size(const json_t *object)
512 Returns the number of elements in *object*, or 0 if *object* is not
515 .. function:: json_t *json_object_get(const json_t *object, const char *key)
517 .. refcounting:: borrow
519 Get a value corresponding to *key* from *object*. Returns *NULL* if
520 *key* is not found and on error.
522 .. function:: int json_object_set(json_t *object, const char *key, json_t *value)
524 Set the value of *key* to *value* in *object*. *key* must be a
525 valid null terminated UTF-8 encoded Unicode string. If there
526 already is a value for *key*, it is replaced by the new value.
527 Returns 0 on success and -1 on error.
529 .. function:: int json_object_set_nocheck(json_t *object, const char *key, json_t *value)
531 Like :func:`json_object_set`, but doesn't check that *key* is
532 valid UTF-8. Use this function only if you are certain that this
533 really is the case (e.g. you have already checked it by other
536 .. function:: int json_object_set_new(json_t *object, const char *key, json_t *value)
538 Like :func:`json_object_set()` but steals the reference to
539 *value*. This is useful when *value* is newly created and not used
542 .. function:: int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value)
544 Like :func:`json_object_set_new`, but doesn't check that *key* is
545 valid UTF-8. Use this function only if you are certain that this
546 really is the case (e.g. you have already checked it by other
549 .. function:: int json_object_del(json_t *object, const char *key)
551 Delete *key* from *object* if it exists. Returns 0 on success, or
552 -1 if *key* was not found.
555 .. function:: int json_object_clear(json_t *object)
557 Remove all elements from *object*. Returns 0 on success and -1 if
558 *object* is not a JSON object.
560 .. function:: int json_object_update(json_t *object, json_t *other)
562 Update *object* with the key-value pairs from *other*, overwriting
563 existing keys. Returns 0 on success or -1 on error.
566 The following functions implement an iteration protocol for objects:
568 .. function:: void *json_object_iter(json_t *object)
570 Returns an opaque iterator which can be used to iterate over all
571 key-value pairs in *object*, or *NULL* if *object* is empty.
573 .. function:: void *json_object_iter_at(json_t *object, const char *key)
575 Like :func:`json_object_iter()`, but returns an iterator to the
576 key-value pair in *object* whose key is equal to *key*, or NULL if
577 *key* is not found in *object*. Iterating forward to the end of
578 *object* only yields all key-value pairs of the object if *key*
579 happens to be the first key in the underlying hash table.
581 .. function:: void *json_object_iter_next(json_t *object, void *iter)
583 Returns an iterator pointing to the next key-value pair in *object*
584 after *iter*, or *NULL* if the whole object has been iterated
587 .. function:: const char *json_object_iter_key(void *iter)
589 Extract the associated key from *iter*.
591 .. function:: json_t *json_object_iter_value(void *iter)
593 .. refcounting:: borrow
595 Extract the associated value from *iter*.
597 .. function:: int json_object_iter_set(json_t *object, void *iter, json_t *value)
599 Set the value of the key-value pair in *object*, that is pointed to
600 by *iter*, to *value*.
602 .. function:: int json_object_iter_set_new(json_t *object, void *iter, json_t *value)
604 Like :func:`json_object_iter_set()`, but steals the reference to
605 *value*. This is useful when *value* is newly created and not used
608 The iteration protocol can be used for example as follows::
610 /* obj is a JSON object */
613 void *iter = json_object_iter(obj);
616 key = json_object_iter_key(iter);
617 value = json_object_iter_value(iter);
618 /* use key and value ... */
619 iter = json_object_iter_next(obj, iter);
626 This sections describes the functions that can be used to encode
627 values to JSON. Only objects and arrays can be encoded, since they are
628 the only valid "root" values of a JSON text.
630 By default, the output has no newlines, and spaces are used between
631 array and object elements for a readable output. This behavior can be
632 altered by using the ``JSON_INDENT`` and ``JSON_COMPACT`` flags
633 described below. A newline is never appended to the end of the encoded
636 Each function takes a *flags* parameter that controls some aspects of
637 how the data is encoded. Its default value is 0. The following macros
638 can be ORed together to obtain *flags*.
641 Pretty-print the result, using newlines between array and object
642 items, and indenting with *n* spaces. The valid range for *n* is
643 between 0 and 32, other values result in an undefined output. If
644 ``JSON_INDENT`` is not used or *n* is 0, no newlines are inserted
645 between array and object items.
648 This flag enables a compact representation, i.e. sets the separator
649 between array and object items to ``","`` and between object keys
650 and values to ``":"``. Without this flag, the corresponding
651 separators are ``", "`` and ``": "`` for more readable output.
653 ``JSON_ENSURE_ASCII``
654 If this flag is used, the output is guaranteed to consist only of
655 ASCII characters. This is achived by escaping all Unicode
656 characters outside the ASCII range.
659 If this flag is used, all the objects in output are sorted by key.
660 This is useful e.g. if two JSON texts are diffed or visually
663 ``JSON_PRESERVE_ORDER``
664 If this flag is used, object keys in the output are sorted into the
665 same order in which they were first inserted to the object. For
666 example, decoding a JSON text and then encoding with this flag
667 preserves the order of object keys.
669 The following functions perform the actual JSON encoding. The result
672 .. function:: char *json_dumps(const json_t *root, size_t flags)
674 Returns the JSON representation of *root* as a string, or *NULL* on
675 error. *flags* is described above. The return value must be freed
676 by the caller using :func:`free()`.
678 .. function:: int json_dumpf(const json_t *root, FILE *output, size_t flags)
680 Write the JSON representation of *root* to the stream *output*.
681 *flags* is described above. Returns 0 on success and -1 on error.
682 If an error occurs, something may have already been written to
683 *output*. In this case, the output is undefined and most likely not
686 .. function:: int json_dump_file(const json_t *json, const char *path, size_t flags)
688 Write the JSON representation of *root* to the file *path*. If
689 *path* already exists, it is overwritten. *flags* is described
690 above. Returns 0 on success and -1 on error.
696 This sections describes the functions that can be used to decode JSON
697 text to the Jansson representation of JSON data. The JSON
698 specification requires that a JSON text is either a serialized array
699 or object, and this requirement is also enforced with the following
700 functions. In other words, the top level value in the JSON text being
701 decoded must be either array or object.
703 See :ref:`rfc-conformance` for a discussion on Jansson's conformance
704 to the JSON specification. It explains many design decisions that
705 affect especially the behavior of the decoder.
707 .. function:: json_t *json_loads(const char *input, size_t flags, json_error_t *error)
711 Decodes the JSON string *input* and returns the array or object it
712 contains, or *NULL* on error, in which case *error* is filled with
713 information about the error. See above for discussion on the
714 *error* parameter. *flags* is currently unused, and should be set
717 .. function:: json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
721 Decodes the JSON text in stream *input* and returns the array or
722 object it contains, or *NULL* on error, in which case *error* is
723 filled with information about the error. See above for discussion
724 on the *error* parameter. *flags* is currently unused, and should
727 .. function:: json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
731 Decodes the JSON text in file *path* and returns the array or
732 object it contains, or *NULL* on error, in which case *error* is
733 filled with information about the error. See above for discussion
734 on the *error* parameter. *flags* is currently unused, and should
737 .. type:: json_error_t
739 This data structure is used to return information on decoding
740 errors from the decoding functions.
742 .. member:: const char *text
744 The error message (in UTF-8), or an empty string if a message is
749 The line number on which the error occurred, or -1 if this
750 information is not available.
752 .. member:: int column
754 The character column on which the error occurred, or -1 if this
755 information is not available.
757 .. member:: const char *source
759 Source of the error. This is (a part of) the file name when
760 using :func:`json_load_file()`, or a special identifier in angle
761 brackets otherwise (e.g. ``<string>``).
763 The normal use of :type:`json_error_t` is to allocate it on the
764 stack, and pass a pointer to a decoding function. Example::
770 json = json_load_file("/path/to/file.json", 0, &error);
772 /* the error variable contains error information */
777 Also note that if the decoding succeeded (``json != NULL`` in the
778 above example), the contents of ``error`` are unspecified.
780 All decoding functions also accept *NULL* as the
781 :type:`json_error_t` pointer, in which case no error information
782 is returned to the caller.
785 .. _apiref-building-values:
790 This sectinon describes functions that help to create, or *pack*,
791 complex JSON values, especially nested objects and arrays. Value
792 building is based on a *format string* that is used to tell the
793 functions about the expected arguments.
795 For example, the format string ``"i"`` specifies a single integer
796 value, while the format string ``"[ssb]"`` or the equivalent ``"[s, s,
797 b]"`` specifies an array value with two integers and a boolean as its
800 /* Create the JSON integer 42 */
803 /* Create the JSON array ["foo", "bar", true] */
804 json_pack("[ssb]", "foo", "bar", 1);
806 Here's the full list of format characters. The type in parentheses
807 denotes the resulting JSON type, and the type in brackets (if any)
808 denotes the C type that is expected as the corresponding argument.
810 ``s`` (string) [const char \*]
811 Convert a NULL terminated UTF-8 string to a JSON string.
814 Output a JSON null value. No argument is consumed.
816 ``b`` (boolean) [int]
817 Convert a C :type:`int` to JSON boolean value. Zero is converted
818 to ``false`` and non-zero to ``true``.
820 ``i`` (integer) [int]
821 Convert a C :type:`int` to JSON integer.
823 ``I`` (integer) [json_int_t]
824 Convert a C :type:`json_int_t` to JSON integer.
826 ``f`` (real) [double]
827 Convert a C :type:`double` to JSON real.
829 ``o`` (any value) [json_t \*]
830 Output any given JSON value as-is. If the value is added to an
831 array or object, the reference to the value passed to ``o`` is
832 stealed by the container.
834 ``O`` (any value) [json_t \*]
835 Like ``o``, but the argument's reference count is incremented.
836 This is useful if you pack and array an array or object and want
837 to keep the reference for the JSON value consumed by ``O`` to
841 Build an array with contents from the inner format string. ``fmt``
842 may contain objects and arrays, i.e. recursive value building is
846 Build an object with contents from the inner format string
847 ``fmt``. The first, third, etc. format character represent a key,
848 and must be ``s`` (as object keys are always strings). The second,
849 fourth, etc. format character represent a value. Any value may be
850 an object or array, i.e. recursive value building is supported.
852 The following functions compose the value building API:
854 .. function:: json_t *json_pack(const char *fmt, ...)
858 Build a new JSON value according to the format string *fmt*. For
859 each format character (except for ``{}[]n``), one argument is
860 consumed and used to build the corresponding value. Returns *NULL*
863 .. function:: json_t *json_pack_ex(json_error_t *error, size_t flags, const char *fmt, ...)
864 json_t *json_vpack_ex(json_error_t *error, size_t flags, const char *fmt, va_list ap)
868 Like :func:`json_pack()`, but an in the case of an error, an error
869 message is written to *error*, if it's not *NULL*. The *flags*
870 parameter is currently unused and should be set to 0.
872 As only the errors in format string (and out-of-memory errors) can
873 be caught by the packer, these two functions are most likely only
874 useful for debugging format strings.
878 /* Build an empty JSON object */
881 /* Build the JSON object {"foo": 42, "bar": 7} */
882 json_pack("{sisb}", "foo", 42, "bar", 7);
884 /* Like above, ':', ',' and whitespace are ignored */
885 json_pack("{s:i, s:b}", "foo", 42, "bar", 7);
887 /* Build the JSON array [[1, 2], {"cool": true}] */
888 json_pack("[[i,i],{s:b]]", 1, 2, "cool", 1);
891 Parsing and validating values
892 =============================
894 This sectinon describes functions that help to validate complex values
895 and extract, or *unpack*, data from them. Like :ref:`building values
896 <apiref-building-values>`, this is also based on format strings.
898 While a JSON value is unpacked, the type specified in the format
899 string is checked to match that of the JSON value. This is the
900 validation part of the process. In addition to this, the unpacking
901 functions can also check that all items of arrays and objects are
902 unpacked. This check be enabled with the format character ``!`` or by
903 using the flag ``JSON_STRICT``. See below for details.
905 Here's the full list of format characters. The type in parentheses
906 denotes the JSON type, and the type in brackets (if any) denotes the C
907 type whose address should be passed.
909 ``s`` (string) [const char \*]
910 Convert a JSON string to a pointer to a NULL terminated UTF-8
914 Expect a JSON null value. Nothing is extracted.
916 ``b`` (boolean) [int]
917 Convert a JSON boolean value to a C :type:`int`, so that ``true``
918 is converted to 1 and ``false`` to 0.
920 ``i`` (integer) [int]
921 Convert a JSON integer to C :type:`int`.
923 ``I`` (integer) [json_int_t]
924 Convert a JSON integer to C :type:`json_int_t`.
926 ``f`` (real) [double]
927 Convert a JSON real to C :type:`double`.
929 ``F`` (integer or real) [double]
930 Convert a JSON number (integer or real) to C :type:`double`.
932 ``o`` (any value) [json_t \*]
933 Store a JSON value with no conversion to a :type:`json_t` pointer.
935 ``O`` (any value) [json_t \*]
936 Like ``O``, but the JSON value's reference count is incremented.
939 Convert each item in the JSON array according to the inner format
940 string. ``fmt`` may contain objects and arrays, i.e. recursive
941 value extraction is supporetd.
944 Convert each item in the JSON object according to the inner format
945 string ``fmt``. The first, third, etc. format character represent
946 a key, and must be ``s``. The corresponding argument to unpack
947 functions is read as the object key. The second fourth, etc.
948 format character represent a value and is written to the address
949 given as the corresponding argument. **Note** that every other
950 argument is read from and every other is written to.
952 ``fmt`` may contain objects and arrays as values, i.e. recursive
953 value extraction is supporetd.
956 This special format character is used to enable the check that
957 all object and array items are accessed, on a per-value basis. It
958 must appear inside an array or object as the last format character
959 before the closing bracket or brace. To enable the check globally,
960 use the ``JSON_STRICT`` unpacking flag.
963 This special format character is the opposite of ``!``. If the
964 ``JSON_STRICT`` flag is used, ``*`` can be used to disable the
965 strict check on a per-value basis. It must appear inside an array
966 or object as the last format character before the closing bracket
969 The following functions compose the parsing and validation API:
971 .. function:: int json_unpack(json_t *root, const char *fmt, ...)
973 Validate and unpack the JSON value *root* according to the format
974 string *fmt*. Returns 0 on success and -1 on failure.
976 .. function:: int json_unpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, ...)
977 int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, va_list ap)
979 Validate and unpack the JSON value *root* according to the format
980 string *fmt*. If an error occurs and *error* is not *NULL*, write
981 error information to *error*. *flags* can be used to control the
982 behaviour of the unpacker, see below for the flags. Returns 0 on
983 success and -1 on failure.
985 The following unpacking flags are available:
988 Enable the extra validation step checking that all object and
989 array items are unpacked. This is equivalent to appending the
990 format character ``!`` to the end of every array and object in the
993 ``JSON_VALIDATE_ONLY``
994 Don't extract any data, just validate the JSON value against the
995 given format string. Note that object keys must still be specified
996 after the format string.
1000 /* root is the JSON integer 42 */
1002 json_unpack(root, "i", &myint);
1003 assert(myint == 42);
1005 /* root is the JSON object {"foo": "bar", "quux": true} */
1008 json_unpack(root, "{s:s, s:b}", "foo", &str, "quux", &boolean);
1009 assert(strcmp(str, "bar") == 0 && boolean == 1);
1011 /* root is the JSON array [[1, 2], {"baz": null} */
1013 json_unpack_ex(root, &error, JSON_VALIDATE_ONLY, "[[i,i], {s:n}]", "baz");
1014 /* returns 0 for validation success, nothing is extracted */
1016 /* root is the JSON array [1, 2, 3, 4, 5] */
1017 int myint1, myint2, ret;
1018 ret = json_unpack(root, "[ii*]", &myint1, &myint2);
1019 assert(ret == 0 && myint1 == 1 && myint2 == 2);
1025 Testing for equality of two JSON values cannot, in general, be
1026 achieved using the ``==`` operator. Equality in the terms of the
1027 ``==`` operator states that the two :type:`json_t` pointers point to
1028 exactly the same JSON value. However, two JSON values can be equal not
1029 only if they are exactly the same value, but also if they have equal
1032 * Two integer or real values are equal if their contained numeric
1033 values are equal. An integer value is never equal to a real value,
1036 * Two strings are equal if their contained UTF-8 strings are equal,
1037 byte by byte. Unicode comparison algorithms are not implemented.
1039 * Two arrays are equal if they have the same number of elements and
1040 each element in the first array is equal to the corresponding
1041 element in the second array.
1043 * Two objects are equal if they have exactly the same keys and the
1044 value for each key in the first object is equal to the value of the
1045 corresponding key in the second object.
1047 * Two true, false or null values have no "contents", so they are equal
1048 if their types are equal. (Because these values are singletons,
1049 their equality can actually be tested with ``==``.)
1051 The following function can be used to test whether two JSON values are
1054 .. function:: int json_equal(json_t *value1, json_t *value2)
1056 Returns 1 if *value1* and *value2* are equal, as defined above.
1057 Returns 0 if they are inequal or one or both of the pointers are
1064 Because of reference counting, passing JSON values around doesn't
1065 require copying them. But sometimes a fresh copy of a JSON value is
1066 needed. For example, if you need to modify an array, but still want to
1067 use the original afterwards, you should take a copy of it first.
1069 Jansson supports two kinds of copying: shallow and deep. There is a
1070 difference between these methods only for arrays and objects. Shallow
1071 copying only copies the first level value (array or object) and uses
1072 the same child values in the copied value. Deep copying makes a fresh
1073 copy of the child values, too. Moreover, all the child values are deep
1074 copied in a recursive fashion.
1076 .. function:: json_t *json_copy(json_t *value)
1078 .. refcounting:: new
1080 Returns a shallow copy of *value*, or *NULL* on error.
1082 .. function:: json_t *json_deep_copy(json_t *value)
1084 .. refcounting:: new
1086 Returns a deep copy of *value*, or *NULL* on error.