ujson
Complete and simple JSON reader and writer written in C
|
A JSON writer. More...
#include <ujson_common.h>
Go to the source code of this file.
Data Structures | |
struct | ujson_writer |
A JSON writer. More... | |
Macros | |
#define | UJSON_WRITER_INIT(vout, vout_priv) |
An ujson_writer initializer with default values. More... | |
Functions | |
ujson_writer * | ujson_writer_file_open (const char *path) |
Allocates a JSON file writer. More... | |
int | ujson_writer_file_close (ujson_writer *self) |
Closes and frees a JSON file writer. More... | |
static int | ujson_writer_err (ujson_writer *self) |
Returns true if writer error happened. More... | |
int | ujson_obj_start (ujson_writer *self, const char *id) |
Starts a JSON object. More... | |
int | ujson_obj_finish (ujson_writer *self) |
Finishes a JSON object. More... | |
int | ujson_arr_start (ujson_writer *self, const char *id) |
Starts a JSON array. More... | |
int | ujson_arr_finish (ujson_writer *self) |
Finishes a JSON array. More... | |
int | ujson_null_add (ujson_writer *self, const char *id) |
Adds a null value. More... | |
int | ujson_int_add (ujson_writer *self, const char *id, long val) |
Adds an integer value. More... | |
int | ujson_bool_add (ujson_writer *self, const char *id, int val) |
Adds a bool value. More... | |
int | ujson_float_add (ujson_writer *self, const char *id, double val) |
Adds a float value. More... | |
int | ujson_str_add (ujson_writer *self, const char *id, const char *str) |
Adds a string value. More... | |
int | ujson_writer_finish (ujson_writer *self) |
Finalizes json writer. More... | |
A JSON writer.
All the function that add values return zero on success and non-zero on a failure. Once an error has happened all subsequent attempts to add more values return with non-zero exit status immediatelly. This is designed so that we can add several values without checking each return value and only check if error has happened at the end of the sequence.
Failures may occur:
Definition in file ujson_writer.h.
#define UJSON_WRITER_INIT | ( | vout, | |
vout_priv | |||
) |
An ujson_writer initializer with default values.
vout | A pointer to function to write out the data. |
vout_priv | An user pointer passed to the out function. |
Definition at line 53 of file ujson_writer.h.
int ujson_arr_finish | ( | ujson_writer * | self | ) |
Finishes a JSON array.
The call will fail if we are currenlty not writing out an array.
self | A JSON writer. |
int ujson_arr_start | ( | ujson_writer * | self, |
const char * | id | ||
) |
Starts a JSON array.
For a top level array the id must be NULL, every other array has to have non-NULL id. The call will also fail if maximal recursion depth UJSON_RECURSION_MAX has been reached.
self | A JSON writer. |
id | An array name. |
int ujson_bool_add | ( | ujson_writer * | self, |
const char * | id, | ||
int | val | ||
) |
Adds a bool value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | An boolean value name. |
val | A boolean value. |
int ujson_float_add | ( | ujson_writer * | self, |
const char * | id, | ||
double | val | ||
) |
Adds a float value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | A floating point value name. |
val | A floating point value. |
int ujson_int_add | ( | ujson_writer * | self, |
const char * | id, | ||
long | val | ||
) |
Adds an integer value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | An integer value name. |
val | An integer value. |
int ujson_null_add | ( | ujson_writer * | self, |
const char * | id | ||
) |
Adds a null value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | A null value name. |
int ujson_obj_finish | ( | ujson_writer * | self | ) |
Finishes a JSON object.
The call will fail if we are currenlty not writing out an object.
self | A JSON writer. |
int ujson_obj_start | ( | ujson_writer * | self, |
const char * | id | ||
) |
Starts a JSON object.
For a top level object the id must be NULL, every other object has to have non-NULL id. The call will also fail if maximal recursion depth UJSON_RECURSION_MAX has been reached.
self | A JSON writer. |
id | An object name. |
int ujson_str_add | ( | ujson_writer * | self, |
const char * | id, | ||
const char * | str | ||
) |
Adds a string value.
The id must be NULL inside of an array, and must be non-NULL inside of an object.
self | A JSON writer. |
id | A string value name. |
str | An UTF8 string value. |
|
inlinestatic |
Returns true if writer error happened.
self | A JSON writer. |
Definition at line 89 of file ujson_writer.h.
int ujson_writer_file_close | ( | ujson_writer * | self | ) |
Closes and frees a JSON file writer.
self | A ujson_writer file writer. |
ujson_writer* ujson_writer_file_open | ( | const char * | path | ) |
Allocates a JSON file writer.
The call may fail either when file cannot be opened for writing or if allocation has failed. In all cases errno should be set correctly.
path | A path to the file, file is opened for writing and created if it does not exist. |
int ujson_writer_finish | ( | ujson_writer * | self | ) |
Finalizes json writer.
Finalizes the json writer, throws possible errors through the error printing function.
self | A JSON writer. |