Welcome to JSONPath-Extractor’s documentation!¶
A selector expression for extracting data from JSON.
Quickstarts¶
Installation¶
Install the stable version from PYPI.
pip install jsonpath-extractor
Or install the latest version from Github.
pip install git+https://github.com/linw1995/jsonpath.git@master
Usage¶
{
"goods": [
{"price": 100, "category": "Comic book"},
{"price": 200, "category": "magazine"},
{"price": 200, "no category": ""}
],
"targetCategory": "book"
}
How to parse and extract all the comic book data from the above JSON file.
import json
from jsonpath import parse
with open("example.json", "r") as f:
data = json.load(f)
assert parse("$.goods[contains(@.category, $.targetCategory)]").find(data) == [
{"price": 100, "category": "Comic book"}
]
Or use the jsonpath.core
module to extract it.
from jsonpath.core import Root, Contains, Self
assert Root().Name("goods").Predicate(
Contains(Self().Name("category"), Root().Name("targetCategory"))
).find(data) == [{"price": 100, "category": "Comic book"}]
Usage via CLI¶
The faster way to extract by using CLI.
jp -f example.json "$.goods[contains(@.category, $.targetCategory)]"
Or pass content by pipeline.
cat example.json | jp "$.goods[contains(@.category, $.targetCategory)]"
The output of the above commands.
[
{
"price": 100,
"category": "Comic book"
}
]
Contributing¶
Environment Setup¶
Clone the source codes from Github.
git clone https://github.com/linw1995/jsonpath.git
cd jsonpath
Setup the development environment. Please make sure you install the pdm, pre-commit and nox CLIs in your environment.
make init
make PYTHON=3.7 init # for specific python version
Linting¶
Use pre-commit for installing linters to ensure a good code style.
make pre-commit
Run linters. Some linters run via CLI nox, so make sure you install it.
make check-all