Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

json-parser/json-builder

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The serializing counterpart to json-parser.

As with json-parser: BSD licensed, almost ANSI C89 apart from a single use of snprintf.

Usage

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.

Modes

  • 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]

Options

  • 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

About

The serializing counterpart to json-parser.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.