A json library using Boost.Spirit V2 and X3 for the parser.
The primary goal of the json spirit library was to create a conformant json parser that resulted in a json object that could be manipulated much like in javascript or python.
// the json::value is the primary data type
// you can simply assign it values
json::value v = 42;
v = "foo";
v = true;
v = 14.5;
// you can also treat the json::value like an array
v[0] = "foo";
v[1] = true;
// or a json object
v["foo"] = 42;
v["bar"] = false;
// and of course, these can be more complex
json::value z;
z[4] = v;
std::cout << z << "\n";
which would result in:
[null, null, null, null, {"bar":false, "foo":42}]
We have CMake and Boost.Build support.
For CMake, do this to build the library:
cd json_spirit
mkdir build
cd build
cmake ..
make
You may specify the version of Boost to build against by defining BOOST_ROOT on the CMake command line like this:
cmake -DBOOST_ROOT=/sandbox/boost/trunk ..
To run the unit tests:
make test
One way to use the json library in another CMake project is to treat it as an external project.
Here is an example of how to do that:
# Find json spirit
ExternalProject_Add(
dependency.json_spirit
URL ${CMAKE_CURRENT_SOURCE_DIR}/vendor/json_spirit
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/json_spirit
CMAKE_COMMAND ${CMAKE_COMMAND}
CMAKE_GENERATOR ${CMAKE_GENERATOR}
CMAKE_ARGS ${BOOST_CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config $<CONFIG> --target json
INSTALL_COMMAND "")
ExternalProject_Get_Property(dependency.json_spirit SOURCE_DIR BINARY_DIR)
set(INSTALL_DIR ${BINARY_DIR}/${CMAKE_CFG_INTDIR})
add_library(json_spirit STATIC IMPORTED)
set(libjson_name "${CMAKE_STATIC_LIBRARY_PREFIX}json${CMAKE_STATIC_LIBRARY_SUFFIX}")
set_property(
TARGET json_spirit
PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/${libjson_name})
set_property(
TARGET json_spirit
PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${SOURCE_DIR})
add_dependencies(json_spirit dependency.json_spirit)
and for your specific target you can:
target_link_libraries(my_target
json_spirit
.... other libraries ... )
For Boost.Build, we assume either your user-config.jam file has a line like this:
use-project /boost : /sandbox/boost/trunk ;
or you have set the environment variable BOOST_ROOT to the location of the boost version you want to use.
You can build the library via:
cd json_spirit
bjam json
You can build the tests via:
cd json_spirit/libs/json/test
bjam
Coming soon. Unit tests located in libs/json/test/*.cpp
provide a good starting point for exploration of the functionality.
json_spirit
is licensed under the Boost Software License. See LICENSE_1_0.txt for details.