json-c
0.13.1
|
json-c
Build Status
JSON-C implements a reference counting object model that allows you to easily construct JSON objects in C, output them as JSON formatted strings and parse JSON formatted strings back into the C representation of JSON objects. It aims to conform to RFC 7159.
Home page for json-c: https://github.com/json-c/json-c/wiki
See also the "Installing prerequisites" section below.
gcc
, clang
, or another C compilerlibtool>=2.2.6b
If you're not using a release tarball, you'll also need:
autoconf>=2.64
(autoreconf
)automake>=1.13
Make sure you have a complete libtool
install, including libtoolize
.
To generate docs (e.g. as part of make distcheck) you'll also need:
doxygen>=1.8.13
json-c
GitHub repo: https://github.com/json-c/json-c
followed by
To build and run the test programs:
If you are on a relatively modern system, you'll likely be able to install the prerequisites using your OS's packaging system.
Then start from the "git clone" command, above.
For older OS's that don't have up-to-date version of the packages will require a bit more work. For example, CentOS release 5.11, etc...
Although json-c does not support fully multi-threaded access to object trees, it has some code to help make use in threaded programs a bit safer. Currently, this is limited to using atomic operations for json_object_get() and json_object_put().
Since this may have a performance impact, of at least 3x slower according to https://stackoverflow.com/a/11609063, it is disabled by default. You may turn it on by adjusting your configure command with: –enable-threading
Separately, the default hash function used for object field keys, lh_char_hash, uses a compare-and-swap operation to ensure the randomly seed is only generated once. Because this is a one-time operation, it is always compiled in when the compare-and-swap operation is available.
If your system has pkgconfig
, then you can just add this to your makefile
:
Without pkgconfig
, you would do something like this:
To use json-c you can either include json.h, or preferrably, one of the following more specific header files:
For a full list of headers see files.html