The serializing counterpart to json-parser.
As with json-parser: BSD licensed, almost ANSI C89 apart from a single use of snprintf.
Quick example (docs coming soon):
json_value * arr = json_array_new(0); json_array_push(arr, json_string_new("Hello world!")); json_array_push(arr, json_integer_new(128)); char * buf = malloc(json_measure(arr)); json_serialize(buf, arr); printf("%s\n", buf);
[ "Hello world!", 128 ]
json-builder is fully interoperable with json-parser:
char json[] = "[ 1, 2, 3 ]"; json_settings settings = {}; settings.value_extra = json_builder_extra; /* space for json-builder state */ char error[128]; json_value * arr = json_parse_ex(&settings, json, strlen(json), error); /* Now serialize it again. */ char * buf = malloc(json_measure(arr)); json_serialize(buf, arr); printf("%s\n", buf);
[ 1, 2, 3 ]
Note that values created by or modified by json-builder must be freed with
json_builder_free instead of json_value_free, otherwise the memory of the
builder state will be leaked.
json_serialize_mode_multiline: Generate multi-line JSON, for example:
[ 1, 2, 3 ]
json_serialize_mode_single_line: Generate JSON on a single line, for example:
[ 1, 2, 3 ]
json_serialize_mode_packed: Generate JSON as tightly packed as possible, for example:
[1,2,3]
-
json_serialize_opt_CRLF: use CR/LF (Windows) line endings -
json_serialize_opt_pack_brackets: do not leave spaces around brackets (e.g.[ 1, 2 ]becomes[1, 2]) -
json_serialize_opt_no_space_after_comma: do not leave spaces after commas -
json_serialize_opt_no_space_after_colon: do not leave spaces after colons (inside objects) -
json_serialize_opt_use_tabs: indent using tabs instead of spaces when in multi-line mode -
indent_size: the number of tabs or spaces to indent with in multi-line mode