108 lines
3.3 KiB
Markdown
108 lines
3.3 KiB
Markdown
# QJson [](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).
|