Skip to content

Repository files navigation

jmespath.cpp

Build StatusBuild statusCoverage StatusMIT license

jmespath.cpp is a C++ implementation of JMESPath, a query language for JSON. It can be used to extract and transform elements of a JSON document.

JMESPath expression example

Input JSON document:

{
"locations": [
{"name": "Seattle", "state": "WA"},
{"name": "New York", "state": "NY"},
{"name": "Bellevue", "state": "WA"},
{"name": "Olympia", "state": "WA"}
]
}

JMESPath expression:

locations[?state == 'WA'].name | sort(@) | {WashingtonCities: join(', ', @)}

Result of evaluating the expression:

{"WashingtonCities": "Bellevue, Olympia, Seattle"}

For more examples take a look at the JMESPath Tutorial or the JMESPath Examples pages.

Usage

To use the public functions and classes of jmespath.cpp you should include the header file #include <jmespath/jmespath.h>. The public interface is declared in the jmespath namespace.

#include<iostream>
#include<jmespath/jmespath.h>namespacejp= jmespath;
intmain(int argc, char *argv[])
{
auto data = R"({ "locations": [ {"name": "Seattle", "state": "WA"}, {"name": "New York", "state": "NY"}, {"name": "Bellevue", "state": "WA"}, {"name": "Olympia", "state": "WA"} ] })"_json;
jp::Expression expression = "locations[?state == 'WA'].name | sort(@) | ""{WashingtonCities: join(', ', @)}";
std::cout << jp::search(expression, data) << std::endl;
return0;
}

Documentation

http://robertmrk.github.io/jmespath.cpp

Install

Requirements

To build, install and use the library you must have CMake installed, version 3.8 or later.

Supported compilers

jmespath.cpp needs a compiler that supports at least the c++14 standard. The currently supported and tested compilers are:

  • g++ versions: 6, 7, 8
  • Clang versions: 4.0, 5.0, 6.0, 7
  • XCode versions: 9.0, 9.3, 10.1
  • Visual Studio 2017

Library dependencies

Install from source

Build and install

To get the source code of the library either clone it from github

git clone https://github.com/robertmrk/jmespath.cpp.git

or download the latest release and extract it.

In the terminal change the current directory to the location of the source code

cd<path_to_source>/jmespath.cpp

Generate the project or makefiles for the build system of your choice with CMake, then build and install the library:

mkdir build
cd build
cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DJMESPATH_BUILD_TESTS=OFF
sudo cmake --build . --target install

Integration

To use the library in your CMake project you should find the library with find_package and link your target with jmespath::jmespath:

cmake_minimum_required(VERSION3.8)
project(example)
find_package(jmespath0.1.0CONFIGREQUIRED)
add_executable(${PROJECT_NAME}main.cpp)
target_link_libraries(${PROJECT_NAME}jmespath::jmespath)
target_compile_features(${PROJECT_NAME}PUBLICcxx_std_14)

Install with Conan

If you are using Conan to manage your dependencies, then add jmespath.cpp/x.y.z@robertmrk/stable to your conanfile.py's requires, where x.y.z is the release version you want to use.

Please file issues here if you experience problems with the packages.

About

C++ implementation of JMESPath, a query language for JSON http://jmespath.org

Topics

Resources

Stars

23 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages