# QJson [![Build Status](https://travis-ci.org/flavio/qjson.svg?branch=master)](https://travis-ci.org/flavio/qjson) 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 * [Website](http://qjson.sourceforge.net/) * [Mailing List](https://lists.sourceforge.net/mailman/listinfo/qjson-devel) * Project Lead/Maintainer (2008-current): [Flavio Castelli](mailto:flavio@castelli.name).