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