Skip to main content

license Pypi Status Python version Package version PyPI - Downloads GitHub last commit Code style: black Build Status codecov PDM managed

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)

Source distribution for jsonpath-extractor 0.9.2
File Size Uploaded
jsonpath-extractor-0.9.2.tar.gz 49.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jsonpath-extractor 0.9.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.9.2 This release

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

1 release file

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page