QJson is a qt-based library that maps JSON data to QVariant objects.
C++ CMake Yacc C
Latest commit a5bdec3 Jan 19, 2017 @selumin selumin committed with Fix parsing from QIODevice
[*] Move parsing to private class;
[*] Use same entry point for both parse() API;

README.md

QJson Build Status

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It can represents integer, real number, string, an ordered sequence of value, and a collection of name/value pairs.

QJson is a qt-based library that maps JSON data to QVariant objects. JSON arrays will be mapped to QVariantList instances, while JSON's objects will be mapped to QVariantMap.

Install

QJson requires:

  • Qt 4.5 or greater
  • cmake 2.6 or greater

Some possible cmake options:

  • -DCMAKE_BUILD_TYPE=DEBUG: enables some debug output (other than making easier to debug the code)
  • -DQJSON_BUILD_TESTS=yes or -DKDE4_BUILD_TESTS=yes: builds the unit tests
  • -DCMAKE_INSTALL_PREFIX=${HOME}/testinstall: install qjson in a custom directory
  • -DCMAKE_INCLUDE_PATH=${HOME}/testinstall/include: include a custom include directory
  • -DCMAKE_LIBRARY_PATH=${HOME}/testinstall/lib: include a custom library directory
  • -DLIB_DESTINATION=lib64: if you have a 64 bit system with separate libraries for 64 bit libraries
  • -DQJSON_VERBOSE_DEBUG_OUTPUT:BOOL=ON: more debugging statements are generated by the parser. It's useful only if you are trying to fix the bison grammar.

For Unix/Linux/Mac:

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=_preferred_path_ ..
make
make install
/sbin/ldconfig #if necessary

Contribute

The recommended way to submit your changes is via a pull request.

Before submitting a patch please ensure:

  • Patched code compiles.
  • The patch is fixing a specific issue or implementing a new feature (it’s not doing multiple things at the same time).
  • QJson unit tests have been updated.
  • QJson unit tests are passing.

Unit testing

QJson unit tests are located under the tests directory. You can enable them passing the -DQJSON_BUILD_TESTS=yes option to cmake.

Note well: make sure you followed the build instructions.

To run all the unit tests move into the build directory and type:

make tests

If you want to run the QJson::Parser unit tests just type:

./test/parser/testparser

If you want to run the QJson::Serializer unit tests just type:

./test/serializer/testserializer

If you want to run the QJson::QObjectHelper tests just type:

./tests/qobjecthelper/testqobjecthelper

If you want to test the QJson parser against a specific JSON object you can use the cmdline_tester program.

This binary is located under the tests directory and has a straightforward syntax:

./tests/cmdline_tester/cmdline_tester text_file_containing_json_object

The command will convert the JSON object to a QVariant and dump it to stdout. More options are available via cli options, just checkout the --help output.

Note well: cmdline_tester relies on qDebug() to dump the object. qDebug has some limitations, like being unable to print utf8 chars.

License

This library is licensed under the Lesser GNU General Public License version 2.1. See the COPYING.lib file for more information.

Resources