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"
}
]
Changelog
v0.9.1
Build
Remove support for Python 3.8
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.8 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
Testing
Run quick tests.
make
Run quick tests with verbose.
make vtest
Run tests with coverage. Testing in multiple Python environments is powered by CLI nox.
make cov
Documentation
Run serving documents with live-reloading.
make serve-docs
Release files for jsonpath-extractor 0.9.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jsonpath-extractor-0.9.2.tar.gz | 49.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jsonpath_extractor-0.9.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 95.5 kB
Release files / jsonpath-extractor-0.9.2.tar.gz
| Download URL | jsonpath-extractor-0.9.2.tar.gz |
|---|---|
| Size | 49.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
374fa9a03755d275808f208fedb13966c5e2b654de1f2b59844f00d2d8a023a1
|
|
BLAKE2b-256 checksum How to use checksums |
2289cbb9755ffb6a622e3cd76f9b952d62680b05b8f3618e7e141b074702a688
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.20
|
Release files / jsonpath_extractor-0.9.2-py3-none-any.whl
| Download URL | jsonpath_extractor-0.9.2-py3-none-any.whl |
|---|---|
| Size | 46.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a79a7a44ebce35538e68d4b7d5ed155a914f942755fcce0a0812b488b794700d
|
|
BLAKE2b-256 checksum How to use checksums |
fcd4a2516842f2e8b49dc3ef7e7d29214709180966c45c1863898cc6720e6b17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.20
|