Metadata-Version: 2.1
Name: jsonpath-extractor
Version: 0.6.1
Summary: A selector expression for extracting data from JSON.
Home-page: https://github.com/linw1995/jsonpath
License: MIT
Author: 林玮
Author-email: linw1995@icloud.com
Requires-Python: >=3.7,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Provides-Extra: docs
Provides-Extra: lark-parser
Provides-Extra: lint
Provides-Extra: test
Requires-Dist: black (>=19.3b0,<20.0); extra == "lint"
Requires-Dist: blacken-docs (>=1.5.0,<2.0.0); extra == "lint"
Requires-Dist: coverage (==4.5.4); extra == "test"
Requires-Dist: doc8 (>=0.8.0,<0.9.0); extra == "lint"
Requires-Dist: flake8 (>=3.7.8,<4.0.0); extra == "lint"
Requires-Dist: flake8-bugbear (>=19.8,<20.0); extra == "lint"
Requires-Dist: isort (>=4.3.21,<5.0.0); extra == "lint"
Requires-Dist: lark-parser (>=0.8.5,<0.9.0); extra == "lint" or extra == "lark-parser" or extra == "docs"
Requires-Dist: livereload (>=2.6.1,<3.0.0); extra == "lint" or extra == "docs"
Requires-Dist: mypy (>=0.750,<0.751); extra == "lint"
Requires-Dist: pexpect (>=4.8.0,<5.0.0); extra == "lint" or extra == "test"
Requires-Dist: pygments (>=2.5.2,<3.0.0); extra == "lint"
Requires-Dist: pytest (>=5.2.0,<6.0.0); extra == "lint" or extra == "test"
Requires-Dist: pytest-cov (>=2.7.1,<3.0.0); extra == "test"
Requires-Dist: sphinx (>=2.3.1,<3.0.0); extra == "docs"
Requires-Dist: typing_extensions (>=3.7,<4.0)
Project-URL: Repository, https://github.com/linw1995/jsonpath
Description-Content-Type: text/x-rst

========
JSONPATH
========

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

A selector expression for extracting data from JSON.

Quickstarts
<<<<<<<<<<<


Installation
~~~~~~~~~~~~

Install the stable version from PYPI.

.. code-block:: shell

    pip install jsonpath-extractor

Or install the latest version from Github.

.. code-block:: shell

    pip install git+https://github.com/linw1995/jsonpath.git@master

Usage
~~~~~

.. code-block:: json

    {
        "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.

.. code-block:: python3

    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 <https://jsonpath.readthedocs.io/en/latest/api_core.html>`_ module to extract it.

.. code-block:: python3

    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.

.. code-block:: shell

    jp -f example.json "$.goods[contains(@.category, $.targetCategory)]"

Or pass content by pipeline.

.. code-block:: shell

    cat example.json | jp "$.goods[contains(@.category, $.targetCategory)]"

The output of the above commands.

.. code-block:: json

    [
      {
        "price": 100,
        "category": "Comic book"
      }
    ]

Changelog
<<<<<<<<<

v0.6.0
~~~~~~

- 3fa0e29 Chg:Remove redundant code
- 8e33efd Fix:Typo
- d3552ac Fix:Release bad sdist. (closes #11)
- e8eab43 New:Create CODE_OF_CONDUCT.md
- 4d8dcd5 Chg:Better way to use codegen module
- f85bd48 Chg:Raises AssertionError when the operator is not supported

v0.6.1
~~~~~~

- c79ef49 Fix:jsonpath/lark_parser.py file is missing in wheel file


.. |license| image:: https://img.shields.io/github/license/linw1995/jsonpath.svg
    :target: https://github.com/linw1995/jsonpath/blob/master/LICENSE

.. |Pypi Status| image:: https://img.shields.io/pypi/status/jsonpath-extractor.svg
    :target: https://pypi.org/project/jsonpath-extractor

.. |Python version| image:: https://img.shields.io/pypi/pyversions/jsonpath-extractor.svg
    :target: https://pypi.org/project/jsonpath-extractor

.. |Package version| image:: https://img.shields.io/pypi/v/jsonpath-extractor.svg
    :target: https://pypi.org/project/jsonpath-extractor

.. |PyPI - Downloads| image:: https://img.shields.io/pypi/dm/jsonpath-extractor.svg
    :target: https://pypi.org/project/jsonpath-extractor

.. |GitHub last commit| image:: https://img.shields.io/github/last-commit/linw1995/jsonpath.svg
    :target: https://github.com/linw1995/jsonpath

.. |Code style: black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/ambv/black

.. |Build Status| image:: https://github.com/linw1995/jsonpath/workflows/Lint&Test/badge.svg
    :target: https://github.com/linw1995/jsonpath/actions?query=workflow%3ALint%26Test

.. |codecov| image:: https://codecov.io/gh/linw1995/jsonpath/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/linw1995/jsonpath

