C library for encoding, decoding and manipulating JSON data

Related tags

JSON c json
Overview

Jansson README

https://ci.appveyor.com/api/projects/status/lmhkkc4q8cwc65ko https://coveralls.io/repos/akheron/jansson/badge.png?branch=master

Jansson is a C library for encoding, decoding and manipulating JSON data. Its main features and design principles are:

  • Simple and intuitive API and data model
  • Comprehensive documentation
  • No dependencies on other libraries
  • Full Unicode support (UTF-8)
  • Extensive test suite

Jansson is licensed under the MIT license; see LICENSE in the source distribution for details.

Compilation and Installation

You can download and install Jansson using the vcpkg dependency manager:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
vcpkg install jansson

The Jansson port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

If you obtained a source tarball from the "Releases" section of the main site just use the standard autotools commands:

$ ./configure
$ make
$ make install

To run the test suite, invoke:

$ make check

If the source has been checked out from a Git repository, the ./configure script has to be generated first. The easiest way is to use autoreconf:

$ autoreconf -i

Documentation

Documentation is available at http://jansson.readthedocs.io/en/latest/.

The documentation source is in the doc/ subdirectory. To generate HTML documentation, invoke:

$ make html

Then, point your browser to doc/_build/html/index.html. Sphinx 1.0 or newer is required to generate the documentation.

Comments
  • build: Add a symbol version to all exported symbols

    build: Add a symbol version to all exported symbols

    The --default-symver linker option attaches a default version definition (the SONAME) to every exported symbol. It is supported since at least GNU binutils 2.22 in 2011 (older versions not tested).

    With this version definition, newly-linked binaries that depend on the jansson shared library will refer to its symbols in a versioned form, preventing their references from being resolved to a symbol of the same name exported by json-c or json-glib if those libraries appear in dependency search order before jansson, which will usually result in a crash. This is necessary because ELF symbol resolution normally uses a single flat namespace, not a tree like Windows symbol resolution. At least one symbol (json_object_iter_next()) is exported by all three JSON libraries.

    Linking with -Bsymbolic is not enough to have this effect in all cases, because -Bsymbolic only affects symbol lookup within a shared object, for example when parse_json() calls json_decref(). It does not affect calls from external code into jansson, unless jansson was statically linked into the external caller.

    This change will also not prevent code that depends on json-c or json-glib from finding jansson's symbols and crashing; to prevent that, a corresponding change in json-c or json-glib would be needed.

    Adding a symbol-version is a backwards-compatible change, but once added, removing or changing the symbol-version would be an incompatible change that requires a SONAME bump.

    Resolves: https://github.com/akheron/jansson/issues/523 (when combined with an equivalent change to json-c).


    I am not a jansson expert, please review and test carefully.

    opened by smcv 21
  • ORing flags together

    ORing flags together

    Can someone give me an example of ORing flags together? I'm trying to use JSON_INDENT and JSON_REAL_PRECISION, but I don't have a clue what it meant by ORing something. Thanks ahead of time.

    opened by WillLuce 18
  • oss-fuzz: Create a fuzzing target for jansson

    oss-fuzz: Create a fuzzing target for jansson

    Hi! I've been adding oss-fuzz support to some open-source projects (lz4, curl) and thought that I'd offer a fix for issue #479 raised by @Google-Autofuzz.

    This takes the sample code they offered and puts it into your build tree. To actually get it into oss-fuzz you'll need to submit a patch in the oss-fuzz project; if this is something you're interested in I have a code branch ready to submit (just needs a contact email address for any bugs that it finds).

    re: the raw Make commands: Annoyingly they've recently changed the behaviour of the LIB_FUZZING_ENGINE variable (it used to be a file, now its value is "-fsanitizer=fuzzer" (so now is a flag). The Make commands here mean that you can build a testcase loader without having to have that set up.

    opened by cmeister2 13
  • Cmake for master

    Cmake for master

    I also have a branch for adding cmake to version 2.3, if you are interested.

    I don't expect you to pull this into your master, but it would be nice if you pulled it into a branch and give it a try. It detects a few extra things properly that your automake system doesn't (yet).

    It should allow you to build with cmake, or build with autotools, with the same tree. Its not a disruptive change, and I prefer using cmake to using the supplied MSVC project files (I've been down that path before with other projects, its annoying).

    cheers :)

    opened by paulharris 13
  • Does not pass on HPE NonStop

    Does not pass on HPE NonStop

    I am building using c99 on HPE NonStop ia64 and x86. Test suite is failing as follows. Let me know what more information I can supply for diagnosis. Also, the -shared option is wrong on this platform. We need -Wshared and some LDFLAGS for export options.

    =======================================
       jansson 2.14: test/test-suite.log
    =======================================
    
    # TOTAL: 1
    # PASS:  0
    # SKIP:  0
    # XFAIL: 0
    # FAIL:  1
    # XPASS: 0
    # ERROR: 0
    
    .. contents:: :depth: 2
    
    FAIL: run-suites
    ================
    
    Suite: api
    F..................
    =================================================================
    api/check-exports
    =================================================================
    --- logs/api/check-exports/exports      2022-03-19 18:10:13 -0500
    +++ logs/api/check-exports/output       2022-03-19 18:10:13 -0500
    @@ -1,81 +0,0 @@
    -jansson_version_cmp
    -jansson_version_str
    -json_array
    -json_array_append_new
    -json_array_clear
    -json_array_extend
    -json_array_get
    -json_array_insert_new
    -json_array_remove
    -json_array_set_new
    -json_array_size
    -json_copy
    -json_deep_copy
    -json_delete
    -json_dump_callback
    -json_dump_file
    -json_dumpb
    -json_dumpf
    -json_dumpfd
    -json_dumps
    -json_equal
    -json_false
    -json_get_alloc_funcs
    -json_integer
    -json_integer_set
    -json_integer_value
    -json_load_callback
    -json_load_file
    -json_loadb
    -json_loadf
    -json_loadfd
    -json_loads
    -json_null
    -json_number_value
    -json_object
    -json_object_clear
    -json_object_del
    -json_object_deln
    -json_object_get
    -json_object_getn
    -json_object_iter
    -json_object_iter_at
    -json_object_iter_key
    -json_object_iter_key_len
    -json_object_iter_next
    -json_object_iter_set_new
    -json_object_iter_value
    -json_object_key_to_iter
    -json_object_seed
    -json_object_set_new
    -json_object_set_new_nocheck
    -json_object_setn_new
    -json_object_setn_new_nocheck
    -json_object_size
    -json_object_update
    -json_object_update_existing
    -json_object_update_missing
    -json_object_update_recursive
    -json_pack
    -json_pack_ex
    -json_real
    -json_real_set
    -json_real_value
    -json_set_alloc_funcs
    -json_sprintf
    -json_string
    -json_string_length
    -json_string_nocheck
    -json_string_set
    -json_string_set_nocheck
    -json_string_setn
    -json_string_setn_nocheck
    -json_string_value
    -json_stringn
    -json_stringn_nocheck
    -json_true
    -json_unpack
    -json_unpack_ex
    -json_vpack_ex
    -json_vsprintf
    -json_vunpack_ex
    
    =================================================================
    Suite: encoding-flags
    ............
    Suite: invalid
    ..................................................
    Suite: invalid-unicode
    ..................
    Suite: valid
    ..................................
    1 of 5 test suites failed
    FAIL run-suites (exit status: 1)
    
    opened by rsbeckerca 12
  • Add json_object_update_recursive()

    Add json_object_update_recursive()

    Support merging values nested within objects. For instance, merging:

        {
    	"foo": 1,
    	"bar": {
    	    "baz": 2
    	}
        }
    

    with

        {
    	"bar": {
    	    "baz": 3
    	}
        }
    

    results in

        {
    	"foo": 1,
    	"bar": {
    	    "baz": 3
    	}
        }
    

    instead of overwriting the value for the bar key.

    opened by hmpcabral 11
  • Add jansson command

    Add jansson command

    The jansson command is a utility for building and parsing JSON objects from the CLI. It is a simple stack machine on which operations can be performed. This command exposes the most important Jansson APIs.

    opened by npmccallum 11
  • Add json_load_callback()

    Add json_load_callback()

    Some embedded operation system only provide direct interface for file I/O, i.e. not supporting the native fopen()/fread() API. So I have to create a json_load_callback() wrapping to allow flexible input.

    As we've already have a json_dump_callback(), it might be interesting for jansson to have one for loading too.

    Update: tab space mixture fixed

    opened by rogerz 11
  • Build: Add JANSSON_ATTRS macro.

    Build: Add JANSSON_ATTRS macro.

    This macro is used to conditionally generate GCC/CLANG attribute declarations if supported.

    This allows the compiler to produce warnings on certain incorrect usages. json_sprintf and json_vsprintf will produce warnings on invalid format string. Many functions will produce a warning if the result is unused. Specifically functions which allocate new objects will warn if the result is ignored as this always results in a memory leak.

    opened by coreyfarrell 10
  • Preserve insertion order in objects

    Preserve insertion order in objects

    My application requires that objects preserve the order of elements when parsed. This modifies the hashtable code to also maintain a linked list of struct hashtable_pair pointers, in the order they are added to the hashtable. Iterator operations now use this instead.

    It adds a bit more space to hashtables and key/value pairs, and adds a list append/remove operation on putting a new value, or deleting a value.

    It does not modify the order on update: it preserves creation order, not update order.

    I kind of butchered linked list handling. I couldn't break out of the "NULL terminates the list" mode of thinking, at least for append-only lists.

    feature 
    opened by csm 10
  • OOB Read memory corruption bug

    OOB Read memory corruption bug

    Hi,

    I encountered an OOB read memory corruption bug when fuzzing Jansson.

    Below you can find the crash log:

    # ./prog -detect_leaks=0
    INFO: Seed: 665849601
    INFO: Loaded 1 modules   (10 inline 8-bit counters): 10 [0x5a3f90, 0x5a3f9a),
    INFO: Loaded 1 PC tables (10 PCs): 10 [0x568020,0x5680c0),
    INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes
    INFO: A corpus is not provided, starting from an empty corpus
    #2      INITED cov: 3 ft: 4 corp: 1/1b exec/s: 0 rss: 27Mb
    #19711  NEW    cov: 6 ft: 7 corp: 2/4b lim: 198 exec/s: 0 rss: 47Mb L: 3/3 MS: 4 InsertByte-InsertByte-ShuffleBytes-ShuffleBytes-
    #19777  REDUCE cov: 6 ft: 7 corp: 2/3b lim: 198 exec/s: 0 rss: 47Mb L: 2/2 MS: 1 EraseBytes-
    #524288 pulse  cov: 6 ft: 7 corp: 2/3b lim: 4096 exec/s: 262144 rss: 610Mb
    #1048576        pulse  cov: 6 ft: 7 corp: 2/3b lim: 4096 exec/s: 262144 rss: 658Mb
    #2097152        pulse  cov: 6 ft: 7 corp: 2/3b lim: 4096 exec/s: 262144 rss: 659Mb
    #4194304        pulse  cov: 6 ft: 7 corp: 2/3b lim: 4096 exec/s: 262144 rss: 659Mb
    #8388608        pulse  cov: 6 ft: 7 corp: 2/3b lim: 4096 exec/s: 262144 rss: 659Mb
    #16777216       pulse  cov: 6 ft: 7 corp: 2/3b lim: 4096 exec/s: 254200 rss: 659Mb
    #33554432       pulse  cov: 6 ft: 7 corp: 2/3b lim: 4096 exec/s: 252288 rss: 659Mb
    #67108864       pulse  cov: 6 ft: 7 corp: 2/3b lim: 4096 exec/s: 246723 rss: 659Mb
    #134217728      pulse  cov: 6 ft: 7 corp: 2/3b lim: 4096 exec/s: 241833 rss: 659Mb
    AddressSanitizer:DEADLYSIGNAL
    =================================================================
    ==1898031==ERROR: AddressSanitizer: SEGV on unknown address 0x610000050000 (pc 0x7f229f4f020b bp 0x7ffcf5010a30 sp 0x7ffcf5010938 T0)
    ==1898031==The signal is caused by a READ memory access.
        #0 0x7f229f4f020b in string_get /root/jansson-2.13/src/load.c:893:7
        #1 0x7f229f4f06f3 in stream_get.part.0 /root/jansson-2.13/src/load.c:158:13
        #2 0x7f229f4f0837 in stream_get /root/jansson-2.13/src/load.c:154:8
        #3 0x7f229f4f0837 in lex_get_save /root/jansson-2.13/src/load.c:233:13
        #4 0x7f229f4f0a32 in lex_scan /root/jansson-2.13/src/load.c:604:17
        #5 0x7f229f4f15da in parse_json.constprop.0 /root/jansson-2.13/src/load.c:868:9
        #6 0x7f229f4f1721 in json_loads /root/jansson-2.13/src/load.c:920:14
        #7 0x54dad3 in LLVMFuzzerTestOneInput /root/fuzzing/jansson/fuzz.c:12:9
        #8 0x4586a1 in fuzzer::Fuzzer::ExecuteCallback(unsigned char const*, unsigned long) (/root/fuzzing/jansson/prog+0x4586a1)
        #9 0x457de5 in fuzzer::Fuzzer::RunOne(unsigned char const*, unsigned long, bool, fuzzer::InputInfo*, bool*) (/root/fuzzing/jansson/prog+0x457de5)
        #10 0x45a087 in fuzzer::Fuzzer::MutateAndTestOne() (/root/fuzzing/jansson/prog+0x45a087)
        #11 0x45ad85 in fuzzer::Fuzzer::Loop(std::__Fuzzer::vector<fuzzer::SizedFile, fuzzer::fuzzer_allocator<fuzzer::SizedFile> >&) (/root/fuzzing/jansson/prog+0x45ad85)
        #12 0x44973e in fuzzer::FuzzerDriver(int*, char***, int (*)(unsigned char const*, unsigned long)) (/root/fuzzing/jansson/prog+0x44973e)
        #13 0x472582 in main (/root/fuzzing/jansson/prog+0x472582)                                                                                                                                                  #14 0x7f229f1810b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16
        #15 0x41e4dd in _start (/root/fuzzing/jansson/prog+0x41e4dd)
    AddressSanitizer can not provide additional info.
    SUMMARY: AddressSanitizer: SEGV /root/jansson-2.13/src/load.c:893:7 in string_get
    ==1898031==ABORTING
    MS: 2 InsertRepeatedBytes-CopyPart-; base unit: 97d170e1550eee4afc0af065b78cda302a97674c
    0x5b,0x5d,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67
    ,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x6
    7,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x
    67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0
    x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,0x67,
    []gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
    artifact_prefix='./'; Test unit written to ./crash-76b9ab07b593b8511d24aea00b925d60735e9d6c
    Base64: W11nZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn
    Z2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dnZ2dn
    

    The fuzzer I used was:

    #include <jansson.h>
    #include <stdio.h>
    
    int LLVMFuzzerTestOneInput(const char *Data, size_t Size) {
            FILE *devNull;
    
            devNull = fopen("/dev/null", "w");
    
            json_t *root;
            json_error_t error;
    
            root = json_loads(Data, 0, &error);
    
            json_dumpf(root, devNull, 0);
            json_decref(root);
    
            fclose(devNull);
    
            return 0;
    }
    

    Kind Regards,

    Jordy Zomer

    opened by JordyZomer 9
  • how petalinux add jansson toolkit?

    how petalinux add jansson toolkit?

    does anybody has experience to add jannson toolkit into xilinx petalinux rootfs, espcial like add CONFIG_jannson instructions into user-roofsconfig then auto including it into petalinux rootfs ?

    3ks

    opened by chenguoping76 0
  • feature request: search for a key into a json document

    feature request: search for a key into a json document

    Hi everybody! sorry if this is not the right place, I actually cannot find a better place... I'll try to make it quick. I have been using libjansson for quite a while now (I think we are close to 10 years or so... - great library by the way) but just today I found myself in the need of a feature that I think is missing from the library.

    It would be great if one could perform a quick search on a json document to verify if a certain key is present. In my use case, an application requires an information that might be present in a json document that can be requested to a web API (just an http request to a specific address). The document is very large, and the position of that particular key is not exactly known in advance. We could collect a few samples of this document to parse it exactly and dig into the hierarchy until we find it, but the server providing this information is not under our control and may change in the future, sending a slightly different json. That would require us to change the code that parses the received json.

    What I was asking is an API that might look like this: jsont_t* json_find(json_t *document, const char *key); that returns NULL if key is not found inside the document or a json_t object in case it founds the key. What happens if there are many instances of that key has to be defined... the API could return an array of json_t* or the function could work as strtok() (that requires multiple calls to advance in the search from the last positive result).

    What do you think? Any chances to see this function implemented in future releases?

    Thanks for reading! Bye

    opened by brizio73 1
  • compiler warning in call to strncpy

    compiler warning in call to strncpy

    Using gcc 10.2.1 on a Debian Bullseye system, I encounter the following warning:

    In function ‘jsonp_error_set_source’,
        inlined from ‘jsonp_error_set_source’ at error.c:17:6:
    error.c:25:9: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
       25 |         strncpy(error->source, source, length + 1);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    error.c: In function ‘jsonp_error_set_source’:
    error.c:23:14: note: length computed here
       23 |     length = strlen(source);
          |              ^~~~~~~~~~~~~~
    

    I doubt it is anything to worry about, but I thought you might like to know. The complete log of how I did this build is below, in case that helps.

    Thanks for creating and maintaining this awesome library!

    [email protected]:~/github/jansson$ uname -a
    Linux doctorno 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13) x86_64 GNU/Linux
    [email protected]:~/github/jansson$ gcc --version
    gcc (Debian 10.2.1-6) 10.2.1 20210110
    Copyright (C) 2020 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    [email protected]:~/github/jansson$ git pull
    Already up to date.
    [email protected]:~/github/jansson$ autoreconf -i
    libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, '.'.
    libtoolize: copying file './ltmain.sh'
    libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac,
    libtoolize: and rerunning libtoolize and aclocal.
    libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
    configure.ac:11: installing './compile'
    configure.ac:13: installing './config.guess'
    configure.ac:13: installing './config.sub'
    configure.ac:5: installing './install-sh'
    configure.ac:5: installing './missing'
    parallel-tests: installing './test-driver'
    src/Makefile.am: installing './depcomp'
    [email protected]:~/github/jansson$ ./configure
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make supports nested variables... yes
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking whether gcc understands -c and -o together... yes
    checking whether make supports the include directive... yes (GNU style)
    checking dependency style of gcc... gcc3
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking dependency style of g++... gcc3
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking how to print strings... printf
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for fgrep... /usr/bin/grep -F
    checking for ld used by gcc... /usr/bin/ld
    checking if the linker (/usr/bin/ld) is GNU ld... yes
    checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
    checking the name lister (/usr/bin/nm -B) interface... BSD nm
    checking whether ln -s works... yes
    checking the maximum length of command line arguments... 1572864
    checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
    checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
    checking for /usr/bin/ld option to reload object files... -r
    checking for objdump... objdump
    checking how to recognize dependent libraries... pass_all
    checking for dlltool... no
    checking how to associate runtime and link libraries... printf %s\n
    checking for ar... ar
    checking for archiver @FILE support... @
    checking for strip... strip
    checking for ranlib... ranlib
    checking command to parse /usr/bin/nm -B output from gcc object... ok
    checking for sysroot... no
    checking for a working dd... /usr/bin/dd
    checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
    checking for mt... mt
    checking if mt is a manifest tool... no
    checking how to run the C preprocessor... gcc -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking for dlfcn.h... yes
    checking for objdir... .libs
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -fPIC -DPIC
    checking if gcc PIC flag -fPIC -DPIC works... yes
    checking if gcc static flag -static works... yes
    checking if gcc supports -c -o file.o... yes
    checking if gcc supports -c -o file.o... (cached) yes
    checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    checking how to run the C++ preprocessor... g++ -E
    checking for ld used by g++... /usr/bin/ld -m elf_x86_64
    checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes
    checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking for g++ option to produce PIC... -fPIC -DPIC
    checking if g++ PIC flag -fPIC -DPIC works... yes
    checking if g++ static flag -static works... yes
    checking if g++ supports -c -o file.o... yes
    checking if g++ supports -c -o file.o... (cached) yes
    checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking dynamic linker characteristics... (cached) GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking endian.h usability... yes
    checking endian.h presence... yes
    checking for endian.h... yes
    checking fcntl.h usability... yes
    checking fcntl.h presence... yes
    checking for fcntl.h... yes
    checking locale.h usability... yes
    checking locale.h presence... yes
    checking for locale.h... yes
    checking sched.h usability... yes
    checking sched.h presence... yes
    checking for sched.h... yes
    checking for unistd.h... (cached) yes
    checking sys/param.h usability... yes
    checking sys/param.h presence... yes
    checking for sys/param.h... yes
    checking for sys/stat.h... (cached) yes
    checking sys/time.h usability... yes
    checking sys/time.h presence... yes
    checking for sys/time.h... yes
    checking for sys/types.h... (cached) yes
    checking for int32_t... yes
    checking for uint32_t... yes
    checking for uint16_t... yes
    checking for uint8_t... yes
    checking for unsigned long long int... yes
    checking for long long int... yes
    checking for inline... inline
    checking for close... yes
    checking for getpid... yes
    checking for gettimeofday... yes
    checking for localeconv... yes
    checking for open... yes
    checking for read... yes
    checking for sched_yield... yes
    checking for strtoll... yes
    checking for gcc __sync builtins... yes
    checking for gcc __atomic builtins... yes
    checking for -Bsymbolic-functions linker flag... yes
    checking whether __GLIBC__ is declared... yes
    checking for -Wno-format-truncation... yes
    checking that generated files are newer than configure... done
    configure: creating ./config.status
    config.status: creating jansson.pc
    config.status: creating Makefile
    config.status: creating doc/Makefile
    config.status: creating src/Makefile
    config.status: creating src/jansson_config.h
    config.status: creating test/Makefile
    config.status: creating test/bin/Makefile
    config.status: creating test/ossfuzz/Makefile
    config.status: creating test/suites/Makefile
    config.status: creating test/suites/api/Makefile
    config.status: creating jansson_private_config.h
    config.status: executing depfiles commands
    config.status: executing libtool commands
    [email protected]:~/github/jansson$ make
    make  all-recursive
    make[1]: Entering directory '/home/don/github/jansson'
    Making all in doc
    make[2]: Entering directory '/home/don/github/jansson/doc'
    make[2]: Nothing to be done for 'all'.
    make[2]: Leaving directory '/home/don/github/jansson/doc'
    Making all in src
    make[2]: Entering directory '/home/don/github/jansson/src'
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT dump.lo -MD -MP -MF .deps/dump.Tpo -c -o dump.lo dump.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT dump.lo -MD -MP -MF .deps/dump.Tpo -c dump.c  -fPIC -DPIC -o .libs/dump.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT dump.lo -MD -MP -MF .deps/dump.Tpo -c dump.c -o dump.o >/dev/null 2>&1
    mv -f .deps/dump.Tpo .deps/dump.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT error.lo -MD -MP -MF .deps/error.Tpo -c -o error.lo error.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT error.lo -MD -MP -MF .deps/error.Tpo -c error.c  -fPIC -DPIC -o .libs/error.o
    In function ‘jsonp_error_set_source’,
        inlined from ‘jsonp_error_set_source’ at error.c:17:6:
    error.c:25:9: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
       25 |         strncpy(error->source, source, length + 1);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    error.c: In function ‘jsonp_error_set_source’:
    error.c:23:14: note: length computed here
       23 |     length = strlen(source);
          |              ^~~~~~~~~~~~~~
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT error.lo -MD -MP -MF .deps/error.Tpo -c error.c -o error.o >/dev/null 2>&1
    mv -f .deps/error.Tpo .deps/error.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT hashtable.lo -MD -MP -MF .deps/hashtable.Tpo -c -o hashtable.lo hashtable.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT hashtable.lo -MD -MP -MF .deps/hashtable.Tpo -c hashtable.c  -fPIC -DPIC -o .libs/hashtable.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT hashtable.lo -MD -MP -MF .deps/hashtable.Tpo -c hashtable.c -o hashtable.o >/dev/null 2>&1
    mv -f .deps/hashtable.Tpo .deps/hashtable.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT hashtable_seed.lo -MD -MP -MF .deps/hashtable_seed.Tpo -c -o hashtable_seed.lo hashtable_seed.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT hashtable_seed.lo -MD -MP -MF .deps/hashtable_seed.Tpo -c hashtable_seed.c  -fPIC -DPIC -o .libs/hashtable_seed.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT hashtable_seed.lo -MD -MP -MF .deps/hashtable_seed.Tpo -c hashtable_seed.c -o hashtable_seed.o >/dev/null 2>&1
    mv -f .deps/hashtable_seed.Tpo .deps/hashtable_seed.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT load.lo -MD -MP -MF .deps/load.Tpo -c -o load.lo load.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT load.lo -MD -MP -MF .deps/load.Tpo -c load.c  -fPIC -DPIC -o .libs/load.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT load.lo -MD -MP -MF .deps/load.Tpo -c load.c -o load.o >/dev/null 2>&1
    mv -f .deps/load.Tpo .deps/load.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT memory.lo -MD -MP -MF .deps/memory.Tpo -c -o memory.lo memory.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT memory.lo -MD -MP -MF .deps/memory.Tpo -c memory.c  -fPIC -DPIC -o .libs/memory.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT memory.lo -MD -MP -MF .deps/memory.Tpo -c memory.c -o memory.o >/dev/null 2>&1
    mv -f .deps/memory.Tpo .deps/memory.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT pack_unpack.lo -MD -MP -MF .deps/pack_unpack.Tpo -c -o pack_unpack.lo pack_unpack.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT pack_unpack.lo -MD -MP -MF .deps/pack_unpack.Tpo -c pack_unpack.c  -fPIC -DPIC -o .libs/pack_unpack.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT pack_unpack.lo -MD -MP -MF .deps/pack_unpack.Tpo -c pack_unpack.c -o pack_unpack.o >/dev/null 2>&1
    mv -f .deps/pack_unpack.Tpo .deps/pack_unpack.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT strbuffer.lo -MD -MP -MF .deps/strbuffer.Tpo -c -o strbuffer.lo strbuffer.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT strbuffer.lo -MD -MP -MF .deps/strbuffer.Tpo -c strbuffer.c  -fPIC -DPIC -o .libs/strbuffer.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT strbuffer.lo -MD -MP -MF .deps/strbuffer.Tpo -c strbuffer.c -o strbuffer.o >/dev/null 2>&1
    mv -f .deps/strbuffer.Tpo .deps/strbuffer.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT strconv.lo -MD -MP -MF .deps/strconv.Tpo -c -o strconv.lo strconv.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT strconv.lo -MD -MP -MF .deps/strconv.Tpo -c strconv.c  -fPIC -DPIC -o .libs/strconv.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT strconv.lo -MD -MP -MF .deps/strconv.Tpo -c strconv.c -o strconv.o >/dev/null 2>&1
    mv -f .deps/strconv.Tpo .deps/strconv.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT utf.lo -MD -MP -MF .deps/utf.Tpo -c -o utf.lo utf.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT utf.lo -MD -MP -MF .deps/utf.Tpo -c utf.c  -fPIC -DPIC -o .libs/utf.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT utf.lo -MD -MP -MF .deps/utf.Tpo -c utf.c -o utf.o >/dev/null 2>&1
    mv -f .deps/utf.Tpo .deps/utf.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT value.lo -MD -MP -MF .deps/value.Tpo -c -o value.lo value.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT value.lo -MD -MP -MF .deps/value.Tpo -c value.c  -fPIC -DPIC -o .libs/value.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT value.lo -MD -MP -MF .deps/value.Tpo -c value.c -o value.o >/dev/null 2>&1
    mv -f .deps/value.Tpo .deps/value.Plo
    /bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..    -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT version.lo -MD -MP -MF .deps/version.Tpo -c -o version.lo version.c
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT version.lo -MD -MP -MF .deps/version.Tpo -c version.c  -fPIC -DPIC -o .libs/version.o
    libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -MT version.lo -MD -MP -MF .deps/version.Tpo -c version.c -o version.o >/dev/null 2>&1
    mv -f .deps/version.Tpo .deps/version.Plo
    /bin/bash ../libtool  --tag=CC   --mode=link gcc -Wall -Wextra -Wdeclaration-after-statement -Wshadow -Wno-format-truncation -g -O2 -no-undefined -export-symbols-regex '^json_|^jansson_' -version-info 18:0:14 -Wl,--default-symver -Wl,-Bsymbolic-functions  -o libjansson.la -rpath /usr/local/lib dump.lo error.lo hashtable.lo hashtable_seed.lo load.lo memory.lo pack_unpack.lo strbuffer.lo strconv.lo utf.lo value.lo version.lo  
    libtool: link: /usr/bin/nm -B  .libs/dump.o .libs/error.o .libs/hashtable.o .libs/hashtable_seed.o .libs/load.o .libs/memory.o .libs/pack_unpack.o .libs/strbuffer.o .libs/strconv.o .libs/utf.o .libs/value.o .libs/version.o   | sed -n -e 's/^.*[	 ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[	 ][	 ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' | /usr/bin/sed 's/.* //' | sort | uniq > .libs/libjansson.exp
    libtool: link: /usr/bin/grep -E -e "^json_|^jansson_" ".libs/libjansson.exp" > ".libs/libjansson.expT"
    libtool: link: mv -f ".libs/libjansson.expT" ".libs/libjansson.exp"
    libtool: link: echo "{ global:" > .libs/libjansson.ver
    libtool: link:  cat .libs/libjansson.exp | sed -e "s/\(.*\)/\1;/" >> .libs/libjansson.ver
    libtool: link:  echo "local: *; };" >> .libs/libjansson.ver
    libtool: link:  gcc -shared  -fPIC -DPIC  .libs/dump.o .libs/error.o .libs/hashtable.o .libs/hashtable_seed.o .libs/load.o .libs/memory.o .libs/pack_unpack.o .libs/strbuffer.o .libs/strconv.o .libs/utf.o .libs/value.o .libs/version.o    -g -O2 -Wl,--default-symver -Wl,-Bsymbolic-functions   -Wl,-soname -Wl,libjansson.so.4 -Wl,-version-script -Wl,.libs/libjansson.ver -o .libs/libjansson.so.4.14.0
    libtool: link: (cd ".libs" && rm -f "libjansson.so.4" && ln -s "libjansson.so.4.14.0" "libjansson.so.4")
    libtool: link: (cd ".libs" && rm -f "libjansson.so" && ln -s "libjansson.so.4.14.0" "libjansson.so")
    libtool: link: ar cr .libs/libjansson.a  dump.o error.o hashtable.o hashtable_seed.o load.o memory.o pack_unpack.o strbuffer.o strconv.o utf.o value.o version.o
    libtool: link: ranlib .libs/libjansson.a
    libtool: link: ( cd ".libs" && rm -f "libjansson.la" && ln -s "../libjansson.la" "libjansson.la" )
    make[2]: Leaving directory '/home/don/github/jansson/src'
    Making all in test
    make[2]: Entering directory '/home/don/github/jansson/test'
    Making all in bin
    make[3]: Entering directory '/home/don/github/jansson/test/bin'
    make[3]: Nothing to be done for 'all'.
    make[3]: Leaving directory '/home/don/github/jansson/test/bin'
    Making all in suites
    make[3]: Entering directory '/home/don/github/jansson/test/suites'
    Making all in api
    make[4]: Entering directory '/home/don/github/jansson/test/suites/api'
    make[4]: Nothing to be done for 'all'.
    make[4]: Leaving directory '/home/don/github/jansson/test/suites/api'
    make[4]: Entering directory '/home/don/github/jansson/test/suites'
    make[4]: Nothing to be done for 'all-am'.
    make[4]: Leaving directory '/home/don/github/jansson/test/suites'
    make[3]: Leaving directory '/home/don/github/jansson/test/suites'
    Making all in ossfuzz
    make[3]: Entering directory '/home/don/github/jansson/test/ossfuzz'
    make[3]: Nothing to be done for 'all'.
    make[3]: Leaving directory '/home/don/github/jansson/test/ossfuzz'
    make[3]: Entering directory '/home/don/github/jansson/test'
    make[3]: Nothing to be done for 'all-am'.
    make[3]: Leaving directory '/home/don/github/jansson/test'
    make[2]: Leaving directory '/home/don/github/jansson/test'
    make[2]: Entering directory '/home/don/github/jansson'
    make[2]: Leaving directory '/home/don/github/jansson'
    make[1]: Leaving directory '/home/don/github/jansson'
    [email protected]:~/github/jansson$ 
    
    
    opened by cosinekitty 0
  • Test fail for jansson 2.14

    Test fail for jansson 2.14

    When running the tests I enncounter the following error:

    make[4]: Entering directory '<BASE>/jansson-2.14/build/test'
    FAIL: run-suites
    ============================================================================
    Testsuite summary for jansson 2.14
    ============================================================================
    # TOTAL: 1
    # PASS:  0
    # SKIP:  0
    # XFAIL: 0
    # FAIL:  1
    # XPASS: 0
    # ERROR: 0
    ============================================================================
    See test/test-suite.log
    Please report to https://github.com/akheron/jansson/issues
    ============================================================================
    make[4]: *** [Makefile:678: test-suite.log] Error 1
    make[4]: Leaving directory '<BASE>/jansson-2.14/build/test'
    make[3]: *** [Makefile:786: check-TESTS] Error 2
    make[3]: Leaving directory '<BASE>/jansson-2.14/build/test'
    make[2]: *** [Makefile:883: check-am] Error 2
    make[2]: Leaving directory '<BASE>/jansson-2.14/build/test'
    make[1]: *** [Makefile:570: check-recursive] Error 1
    make[1]: Leaving directory '<BASE>/jansson-2.14/build/test'
    make: *** [Makefile:642: check-recursive] Error 1
    

    Im on the following machine:

    Linux 5.15.0-43-generic #46-Ubuntu SMP x86_64 GNU/Linux
    
    
    opened by AndHager 2
  • Unpack default value if key missing

    Unpack default value if key missing

    A feature that I would find useful at the moment is the ability to unpack a given default value when the specified key is missing. You could add a double ? as a format specifier, and then expect two arguments instead of one, the second being the default to "unpack" instead of the missing value.

    Something like this: int unpk = json_unpack_ex(my_object, &error, 0, "{s??i}", "foo", 42, &i);

    opened by Zer0-One 2
Releases(v2.14)
https://github.com/json-c/json-c is the official code repository for json-c. See the wiki for release tarballs for download. API docs at http://json-c.github.io/json-c/

\mainpage json-c Overview and Build Status Building on Unix Prerequisites Build commands CMake options Testing Building with vcpkg Linking to libjson-

json-c 2.5k Sep 13, 2022
A Haskell library for fast decoding of JSON documents using the simdjson C++ library

hermes A Haskell interface over the simdjson C++ library for decoding JSON documents. Hermes, messenger of the gods, was the maternal great-grandfathe

Josh Miller 36 Jun 29, 2022
This is a JSON C++ library. It can write and read JSON files with ease and speed.

Json Box JSON (JavaScript Object Notation) is a lightweight data-interchange format. Json Box is a C++ library used to read and write JSON with ease a

Anhero inc. 108 Aug 26, 2022
json-cpp is a C++11 JSON serialization library.

JSON parser and generator for C++ Version 0.1 alpha json-cpp is a C++11 JSON serialization library. Example #include <json-cpp.hpp> struct Foo {

Anatoly Scheglov 4 Dec 31, 2019
A convenience C++ wrapper library for JSON-Glib providing friendly syntactic sugar for parsing JSON

This library is a wrapper for the json-glib library that aims to provide the user with a trivial alternative API to the API provided by the base json-

Rob J Meijer 16 May 10, 2022
json-build is a zero-allocation JSON serializer compatible with C89

json-build is a zero-allocation JSON serializer compatible with C89. It is inspired by jsmn, a minimalistic JSON tokenizer.

Lucas Müller 28 Sep 14, 2022
A small header-only library for converting data between json representation and c++ structs

Table of Contents Table of Contents What Is json_dto? What's new? v.0.3.0 v.0.2.14 v.0.2.13 v.0.2.12 v.0.2.11 v.0.2.10 v.0.2.9 v.0.2.8 v.0.2.7 v.0.2.6

Stiffstream 99 Sep 22, 2022
QJson is a qt-based library that maps JSON data to QVariant objects.

QJson JSON (JavaScript Object Notation) is a lightweight data-interchange format. It can represents integer, real number, string, an ordered sequence

Flavio Castelli 269 Sep 17, 2022
A simple class for parsing JSON data into a QVariant hierarchy and vice versa.

The qt-json project is a simple collection of functions for parsing and serializing JSON data to and from QVariant hierarchies. NOTE: Qt5 introduced a

null 302 Sep 15, 2022
A simple class for parsing JSON data into a QVariant hierarchy and vice versa.

The qt-json project is a simple collection of functions for parsing and serializing JSON data to and from QVariant hierarchies. NOTE: Qt5 introduced a

null 302 Sep 15, 2022
A Simple Nastran to JSON mesh reader which makes it easy to exchange data

Nastran to Json Converter A simple code that helps convert Nastran meshes to a JSON file format that is more suitable for the current day and age. Cur

Vijai Kumar S 5 Sep 23, 2021
json2cpp is compiles a json file into static constexpr data structures that can be used at compile time or runtime

json2cpp json2cpp is compiles a json file into static constexpr data structures that can be used at compile time or runtime. Features Literally 0 runt

Jason Turner 169 Sep 6, 2022
An easy-to-use and competitively fast JSON parsing library for C++17, forked from Bitcoin Cash Node's own UniValue library.

UniValue JSON Library for C++17 (and above) An easy-to-use and competitively fast JSON parsing library for C++17, forked from Bitcoin Cash Node's own

Calin Culianu 24 Sep 21, 2022
📟 JSON library for Arduino and embedded C++. Simple and efficient.

ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things). Features JSON deserialization Optionally decodes UTF-16 escape sequences t

Benoît Blanchon 5.8k Sep 17, 2022
a JSON parser and printer library in C. easy to integrate with any model.

libjson - simple and efficient json parser and printer in C Introduction libjson is a simple library without any dependancies to parse and pretty prin

Vincent Hanquez 263 Aug 9, 2022
json_struct is a single header only C++ library for parsing JSON directly to C++ structs and vice versa

Structurize your JSON json_struct is a single header only library that parses JSON to C++ structs/classes and serializing structs/classes to JSON. It

Jørgen Lind 241 Sep 4, 2022
A very sane (header only) C++14 JSON library

JeayeSON - a very sane C++14 JSON library JeayeSON was designed out of frustration that there aren't many template-based approaches to handling JSON i

Jeaye Wilkerson 128 Jun 7, 2022
A C++ library for interacting with JSON.

JsonCpp JSON is a lightweight data-interchange format. It can represent numbers, strings, ordered sequences of values, and collections of name/value p

null 6.6k Sep 15, 2022
A tiny JSON library for C++11.

json11 json11 is a tiny JSON library for C++11, providing JSON parsing and serialization. The core object provided by the library is json11::Json. A J

Dropbox 2.4k Sep 20, 2022