dump: Revise whitespace usage
[jansson.git] / doc / apiref.rst
1 .. _apiref:
2
3 *************
4 API Reference
5 *************
6
7 .. highlight:: c
8
9 Preliminaries
10 =============
11
12 All declarations are in :file:`jansson.h`, so it's enough to
13
14 ::
15
16    #include <jansson.h>
17
18 in each source file.
19
20 All constants are prefixed ``JSON_`` and other identifiers with
21 ``json_``. Type names are suffixed with ``_t`` and ``typedef``\ 'd so
22 that the ``struct`` keyword need not be used.
23
24
25 Value Representation
26 ====================
27
28 The JSON specification (:rfc:`4627`) defines the following data types:
29 *object*, *array*, *string*, *number*, *boolean*, and *null*. JSON
30 types are used dynamically; arrays and objects can hold any other data
31 type, including themselves. For this reason, Jansson's type system is
32 also dynamic in nature. There's one C type to represent all JSON
33 values, and this structure knows the type of the JSON value it holds.
34
35 .. ctype:: json_t
36
37   This data structure is used throughout the library to represent all
38   JSON values. It always contains the type of the JSON value it holds
39   and the value's reference count. The rest depends on the type of the
40   value.
41
42 Objects of :ctype:`json_t` are always used through a pointer. There
43 are APIs for querying the type, manipulating the reference count, and
44 for constructing and manipulating values of different types.
45
46 Unless noted otherwise, all API functions return an error value if an
47 error occurs. Depending on the function's signature, the error value
48 is either *NULL* or -1. Invalid arguments or invalid input are
49 apparent sources for errors. Memory allocation and I/O operations may
50 also cause errors.
51
52
53 Type
54 ----
55
56 The type of a JSON value is queried and tested using the following
57 functions:
58
59 .. ctype:: enum json_type
60
61    The type of a JSON value. The following members are defined:
62
63    +-------------------------+
64    | :const:`JSON_OBJECT`    |
65    +-------------------------+
66    | :const:`JSON_ARRAY`     |
67    +-------------------------+
68    | :const:`JSON_STRING`    |
69    +-------------------------+
70    | :const:`JSON_INTEGER`   |
71    +-------------------------+
72    | :const:`JSON_REAL`      |
73    +-------------------------+
74    | :const:`JSON_TRUE`      |
75    +-------------------------+
76    | :const:`JSON_FALSE`     |
77    +-------------------------+
78    | :const:`JSON_NULL`      |
79    +-------------------------+
80
81    These correspond to JSON object, array, string, number, boolean and
82    null. A number is represented by either a value of the type
83    :const:`JSON_INTEGER` or of the type :const:`JSON_REAL`. A true
84    boolean value is represented by a value of the type
85    :const:`JSON_TRUE` and false by a value of the type
86    :const:`JSON_FALSE`.
87
88 .. cfunction:: int json_typeof(const json_t *json)
89
90    Return the type of the JSON value (a :ctype:`json_type` cast to
91    :ctype:`int`). *json* MUST NOT be *NULL*. This function is actually
92    implemented as a macro for speed.
93
94 .. cfunction:: json_is_object(const json_t *json)
95                json_is_array(const json_t *json)
96                json_is_string(const json_t *json)
97                json_is_integer(const json_t *json)
98                json_is_real(const json_t *json)
99                json_is_true(const json_t *json)
100                json_is_false(const json_t *json)
101                json_is_null(const json_t *json)
102
103    These functions (actually macros) return true (non-zero) for values
104    of the given type, and false (zero) for values of other types and
105    for *NULL*.
106
107 .. cfunction:: json_is_number(const json_t *json)
108
109    Returns true for values of types :const:`JSON_INTEGER` and
110    :const:`JSON_REAL`, and false for other types and for *NULL*.
111
112 .. cfunction:: json_is_boolean(const json_t *json)
113
114    Returns true for types :const:`JSON_TRUE` and :const:`JSON_FALSE`,
115    and false for values of other types and for *NULL*.
116
117
118 .. _apiref-reference-count:
119
120 Reference Count
121 ---------------
122
123 The reference count is used to track whether a value is still in use
124 or not. When a value is created, it's reference count is set to 1. If
125 a reference to a value is kept (e.g. a value is stored somewhere for
126 later use), its reference count is incremented, and when the value is
127 no longer needed, the reference count is decremented. When the
128 reference count drops to zero, there are no references left, and the
129 value can be destroyed.
130
131 The following functions are used to manipulate the reference count.
132
133 .. cfunction:: json_t *json_incref(json_t *json)
134
135    Increment the reference count of *json* if it's not non-*NULL*.
136    Returns *json*.
137
138 .. cfunction:: void json_decref(json_t *json)
139
140    Decrement the reference count of *json*. As soon as a call to
141    :cfunc:`json_decref()` drops the reference count to zero, the value
142    is destroyed and it can no longer be used.
143
144 Functions creating new JSON values set the reference count to 1. These
145 functions are said to return a **new reference**. Other functions
146 returning (existing) JSON values do not normally increase the
147 reference count. These functions are said to return a **borrowed
148 reference**. So, if the user will hold a reference to a value returned
149 as a borrowed reference, he must call :cfunc:`json_incref`. As soon as
150 the value is no longer needed, :cfunc:`json_decref` should be called
151 to release the reference.
152
153 Normally, all functions accepting a JSON value as an argument will
154 manage the reference, i.e. increase and decrease the reference count
155 as needed. However, some functions **steal** the reference, i.e. they
156 have the same result as if the user called :cfunc:`json_decref()` on
157 the argument right after calling the function. These are usually
158 convenience functions for adding new references to containers and not
159 to worry about the reference count.
160
161 In the following sections it is clearly documented whether a function
162 will return a new or borrowed reference or steal a reference to its
163 argument.
164
165
166 Circular References
167 -------------------
168
169 A circular reference is created when an object or an array is,
170 directly or indirectly, inserted inside itself. The direct case is
171 simple::
172
173   json_t *obj = json_object();
174   json_object_set(obj, "foo", obj);
175
176 Jansson will refuse to do this, and :cfunc:`json_object_set()` (and
177 all the other such functions for objects and arrays) will return with
178 an error status. The indirect case is the dangerous one::
179
180   json_t *arr1 = json_array(), *arr2 = json_array();
181   json_array_append(arr1, arr2);
182   json_array_append(arr2, arr1);
183
184 In this example, the array ``arr2`` is contained in the array
185 ``arr1``, and vice versa. Jansson cannot check for this kind of
186 indirect circular references without a performance hit, so it's up to
187 the user to avoid them.
188
189 If a circular reference is created, the memory consumed by the values
190 cannot be freed by :cfunc:`json_decref()`. The reference counts never
191 drops to zero because the values are keeping the circular reference to
192 themselves. Moreover, trying to encode the values with any of the
193 encoding functions will fail. The encoder detects circular references
194 and returns an error status.
195
196
197 True, False and Null
198 ====================
199
200 These values are implemented as singletons, so each of these functions
201 returns the same value each time.
202
203 .. cfunction:: json_t *json_true(void)
204
205    .. refcounting:: new
206
207    Returns the JSON true value.
208
209 .. cfunction:: json_t *json_false(void)
210
211    .. refcounting:: new
212
213    Returns the JSON false value.
214
215 .. cfunction:: json_t *json_null(void)
216
217    .. refcounting:: new
218
219    Returns the JSON null value.
220
221
222 String
223 ======
224
225 .. cfunction:: json_t *json_string(const char *value)
226
227    .. refcounting:: new
228
229    Returns a new JSON string, or *NULL* on error. *value* must be a
230    valid UTF-8 encoded Unicode string.
231
232 .. cfunction:: const char *json_string_value(const json_t *string)
233
234    Returns the associated value of *string* as a null terminated UTF-8
235    encoded string, or *NULL* if *string* is not a JSON string.
236
237 .. cfunction:: int json_string_set(const json_t *string, const char *value)
238
239    Sets the associated value of *string* to *value*. *value* must be a
240    valid UTF-8 encoded Unicode string. Returns 0 on success and -1 on
241    error.
242
243    .. versionadded:: 1.1
244
245
246 Number
247 ======
248
249 .. cfunction:: json_t *json_integer(int value)
250
251    .. refcounting:: new
252
253    Returns a new JSON integer, or *NULL* on error.
254
255 .. cfunction:: int json_integer_value(const json_t *integer)
256
257    Returns the associated value of *integer*, or 0 if *json* is not a
258    JSON integer.
259
260 .. cfunction:: int json_integer_set(const json_t *integer, int value)
261
262    Sets the associated value of *integer* to *value*. Returns 0 on
263    success and -1 if *integer* is not a JSON integer.
264
265    .. versionadded:: 1.1
266
267 .. cfunction:: json_t *json_real(double value)
268
269    .. refcounting:: new
270
271    Returns a new JSON real, or *NULL* on error.
272
273 .. cfunction:: double json_real_value(const json_t *real)
274
275    Returns the associated value of *real*, or 0.0 if *real* is not a
276    JSON real.
277
278 .. cfunction:: int json_real_set(const json_t *real, double value)
279
280    Sets the associated value of *real* to *value*. Returns 0 on
281    success and -1 if *real* is not a JSON real.
282
283    .. versionadded:: 1.1
284
285 In addition to the functions above, there's a common query function
286 for integers and reals:
287
288 .. cfunction:: double json_number_value(const json_t *json)
289
290    Returns the associated value of the JSON integer or JSON real
291    *json*, cast to double regardless of the actual type. If *json* is
292    neither JSON real nor JSON integer, 0.0 is returned.
293
294
295 Array
296 =====
297
298 A JSON array is an ordered collection of other JSON values.
299
300 .. cfunction:: json_t *json_array(void)
301
302    .. refcounting:: new
303
304    Returns a new JSON array, or *NULL* on error. Initially, the array
305    is empty.
306
307 .. cfunction:: unsigned int json_array_size(const json_t *array)
308
309    Returns the number of elements in *array*, or 0 if *array* is NULL
310    or not a JSON array.
311
312 .. cfunction:: json_t *json_array_get(const json_t *array, unsigned int index)
313
314    .. refcounting:: borrow
315
316    Returns the element in *array* at position *index*. The valid range
317    for *index* is from 0 to the return value of
318    :cfunc:`json_array_size()` minus 1. If *array* is not a JSON array,
319    if *array* is *NULL*, or if *index* is out of range, *NULL* is
320    returned.
321
322 .. cfunction:: int json_array_set(json_t *array, unsigned int index, json_t *value)
323
324    Replaces the element in *array* at position *index* with *value*.
325    The valid range for *index* is from 0 to the return value of
326    :cfunc:`json_array_size()` minus 1. Returns 0 on success and -1 on
327    error.
328
329 .. cfunction:: int json_array_set_new(json_t *array, unsigned int index, json_t *value)
330
331    Like :cfunc:`json_array_set()` but steals the reference to *value*.
332    This is useful when *value* is newly created and not used after
333    the call.
334
335    .. versionadded:: 1.1
336
337 .. cfunction:: int json_array_append(json_t *array, json_t *value)
338
339    Appends *value* to the end of *array*, growing the size of *array*
340    by 1. Returns 0 on success and -1 on error.
341
342 .. cfunction:: int json_array_append_new(json_t *array, json_t *value)
343
344    Like :cfunc:`json_array_append()` but steals the reference to
345    *value*. This is useful when *value* is newly created and not used
346    after the call.
347
348    .. versionadded:: 1.1
349
350 .. cfunction:: int json_array_insert(json_t *array, unsigned int index, json_t *value)
351
352    Inserts *value* to *array* at position *index*, shifting the
353    elements at *index* and after it one position towards the end of
354    the array. Returns 0 on success and -1 on error.
355
356    .. versionadded:: 1.1
357
358 .. cfunction:: int json_array_insert_new(json_t *array, unsigned int index, json_t *value)
359
360    Like :cfunc:`json_array_insert()` but steals the reference to
361    *value*. This is useful when *value* is newly created and not used
362    after the call.
363
364    .. versionadded:: 1.1
365
366 .. cfunction:: int json_array_remove(json_t *array, unsigned int index)
367
368    Removes the element in *array* at position *index*, shifting the
369    elements after *index* one position towards the start of the array.
370    Returns 0 on success and -1 on error.
371
372    .. versionadded:: 1.1
373
374 .. cfunction:: int json_array_clear(json_t *array)
375
376    Removes all elements from *array*. Returns 0 on sucess and -1 on
377    error.
378
379    .. versionadded:: 1.1
380
381 .. cfunction:: int json_array_extend(json_t *array, json_t *other_array)
382
383    Appends all elements in *other_array* to the end of *array*.
384    Returns 0 on success and -1 on error.
385
386    .. versionadded:: 1.1
387
388
389 Object
390 ======
391
392 A JSON object is a dictionary of key-value pairs, where the key is a
393 Unicode string and the value is any JSON value.
394
395 .. cfunction:: json_t *json_object(void)
396
397    .. refcounting:: new
398
399    Returns a new JSON object, or *NULL* on error. Initially, the
400    object is empty.
401
402 .. cfunction:: unsigned int json_object_size(const json_t *object)
403
404    Returns the number of elements in *object*, or 0 if *object* is not
405    a JSON object.
406
407    .. versionadded:: 1.1
408
409 .. cfunction:: json_t *json_object_get(const json_t *object, const char *key)
410
411    .. refcounting:: borrow
412
413    Get a value corresponding to *key* from *object*. Returns *NULL* if
414    *key* is not found and on error.
415
416 .. cfunction:: int json_object_set(json_t *object, const char *key, json_t *value)
417
418    Set the value of *key* to *value* in *object*. *key* must be a
419    valid null terminated UTF-8 encoded Unicode string. If there
420    already is a value for *key*, it is replaced by the new value.
421    Returns 0 on success and -1 on error.
422
423 .. cfunction:: int json_object_set_new(json_t *object, const char *key, json_t *value)
424
425    Like :cfunc:`json_object_set()` but steals the reference to
426    *value*. This is useful when *value* is newly created and not used
427    after the call.
428
429    .. versionadded:: 1.1
430
431 .. cfunction:: int json_object_del(json_t *object, const char *key)
432
433    Delete *key* from *object* if it exists. Returns 0 on success, or
434    -1 if *key* was not found.
435
436
437 .. cfunction:: int json_object_clear(json_t *object)
438
439    Remove all elements from *object*. Returns 0 on success and -1 if
440    *object* is not a JSON object.
441
442    .. versionadded:: 1.1
443
444 .. cfunction:: int json_object_update(json_t *object, json_t *other)
445
446    Update *object* with the key-value pairs from *other*, overwriting
447    existing keys. Returns 0 on success or -1 on error.
448
449    .. versionadded:: 1.1
450
451
452 The following functions implement an iteration protocol for objects:
453
454 .. cfunction:: void *json_object_iter(json_t *object)
455
456    Returns an opaque iterator which can be used to iterate over all
457    key-value pairs in *object*, or *NULL* if *object* is empty.
458
459 .. cfunction:: void *json_object_iter_next(json_t *object, void *iter)
460
461    Returns an iterator pointing to the next key-value pair in *object*
462    after *iter*, or *NULL* if the whole object has been iterated
463    through.
464
465 .. cfunction:: const char *json_object_iter_key(void *iter)
466
467    Extract the associated key from *iter*.
468
469 .. cfunction:: json_t *json_object_iter_value(void *iter)
470
471    .. refcounting:: borrow
472
473    Extract the associated value from *iter*.
474
475 The iteration protocol can be used for example as follows::
476
477    /* obj is a JSON object */
478    const char *key;
479    json_t *value;
480    void *iter = json_object_iter(obj);
481    while(iter)
482    {
483        key = json_object_iter_key(iter);
484        value = json_object_iter_value(iter);
485        /* use key and value ... */
486        iter = json_object_iter_next(obj, iter);
487    }
488
489
490 Encoding
491 ========
492
493 This sections describes the functions that can be used to encode
494 values to JSON. Only objects and arrays can be encoded, since they are
495 the only valid "root" values of a JSON text.
496
497 By default, the output has no newlines, and spaces are used between
498 array and object elements for a readable output. This behavior can be
499 altered by using the ``JSON_INDENT`` and ``JSON_COMPACT`` flags
500 described below. A newline is never appended to the end of the encoded
501 JSON data.
502
503 Each function takes a *flags* parameter that controls some aspects of
504 how the data is encoded. Its default value is 0. The following macros
505 can be ORed together to obtain *flags*.
506
507 ``JSON_INDENT(n)``
508    Pretty-print the result, using newlines between array and object
509    items, and indenting with *n* spaces. The valid range for *n* is
510    between 0 and 255, other values result in an undefined output. If
511    ``JSON_INDENT`` is not used or *n* is 0, no newlines are inserted
512    between array and object items.
513
514 ``JSON_COMPACT``
515    This flag enables a compact representation, i.e. sets the separator
516    between array and object items to ``","`` and between object keys
517    and values to ``":"``. Without this flag, the corresponding
518    separators are ``", "`` and ``": "`` for more readable output.
519
520    .. versionadded:: 1.2
521
522 The following functions perform the actual JSON encoding. The result
523 is in UTF-8.
524
525 .. cfunction:: char *json_dumps(const json_t *root, unsigned long flags)
526
527    Returns the JSON representation of *root* as a string, or *NULL* on
528    error. *flags* is described above. The return value must be freed
529    by the caller using :cfunc:`free()`.
530
531 .. cfunction:: int json_dumpf(const json_t *root, FILE *output, unsigned long flags)
532
533    Write the JSON representation of *root* to the stream *output*.
534    *flags* is described above. Returns 0 on success and -1 on error.
535    If an error occurs, something may have already been written to
536    *output*. In this case, the output is undefined and most likely not
537    valid JSON.
538
539 .. cfunction:: int json_dump_file(const json_t *json, const char *path, unsigned long flags)
540
541    Write the JSON representation of *root* to the file *path*. If
542    *path* already exists, it is overwritten. *flags* is described
543    above. Returns 0 on success and -1 on error.
544
545
546 Decoding
547 ========
548
549 This sections describes the functions that can be used to decode JSON
550 text to the Jansson representation of JSON data. The JSON
551 specification requires that a JSON text is either a serialized array
552 or object, and this requirement is also enforced with the following
553 functions.
554
555 The only supported character encoding is UTF-8 (which ASCII is a
556 subset of).
557
558 .. ctype:: json_error_t
559
560    This data structure is used to return information on decoding
561    errors from the decoding functions. Its definition is repeated
562    here::
563
564       #define JSON_ERROR_TEXT_LENGTH  160
565
566       typedef struct {
567           char text[JSON_ERROR_TEXT_LENGTH];
568           int line;
569       } json_error_t;
570
571    *line* is the line number on which the error occurred, or -1 if
572    this information is not available. *text* contains the error
573    message (in UTF-8), or an empty string if a message is not
574    available.
575
576    The normal usef of :ctype:`json_error_t` is to allocate it normally
577    on the stack, and pass a pointer to a decoding function. Example::
578
579       int main() {
580           json_t *json;
581           json_error_t error;
582
583           json = json_load_file("/path/to/file.json", &error);
584           if(!json) {
585               /* the error variable contains error information */
586           }
587           ...
588       }
589
590    Also note that if the decoding succeeded (``json != NULL`` in the
591    above example), the contents of ``error`` are unspecified.
592
593    All decoding functions also accept *NULL* as the
594    :ctype:`json_error_t` pointer, in which case no error information
595    is returned to the caller.
596
597 The following functions perform the actual JSON decoding.
598
599 .. cfunction:: json_t *json_loads(const char *input, json_error_t *error)
600
601    .. refcounting:: new
602
603    Decodes the JSON string *input* and returns the array or object it
604    contains, or *NULL* on error, in which case *error* is filled with
605    information about the error. See above for discussion on the
606    *error* parameter.
607
608 .. cfunction:: json_t *json_loadf(FILE *input, json_error_t *error)
609
610    .. refcounting:: new
611
612    Decodes the JSON text in stream *input* and returns the array or
613    object it contains, or *NULL* on error, in which case *error* is
614    filled with information about the error. See above for discussion
615    on the *error* parameter.
616
617 .. cfunction:: json_t *json_load_file(const char *path, json_error_t *error)
618
619    .. refcounting:: new
620
621    Decodes the JSON text in file *path* and returns the array or
622    object it contains, or *NULL* on error, in which case *error* is
623    filled with information about the error. See above for discussion
624    on the *error* parameter.