Skip to main content

A more powerful JSONPath implementation in modern python

Project description

jsonpath-python

A more powerful JSONPath implementation in modern python.

Features

  • Light. (No need to install third-party dependencies.)
  • Support basic semantics of JSONPath.
  • Support output modes: VALUE, PATH.
  • Support filter operator, including multi-selection, inverse-selection filtering.
  • Support sorter operator, including sorting by multiple fields, ascending and descending order.
  • Support parent operator.
  • Support user-defined function.

Examples

JSON format data:

data = {
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    }
}

Filter

>>> JSONPath('$.store.book[?(@.price>8.95 and @.price<=20 and @.title!="Sword of Honour")]').parse(data)
[
  {
    "category": "fiction",
    "author": "Herman Melville",
    "title": "Moby Dick",
    "isbn": "0-553-21311-3",
    "price": 8.99
  }
]

Sorter

>>> JSONPath("$.store.book[/(~category,price)]").parse(data)
[
  {
    "category": "reference",
    "author": "Nigel Rees",
    "title": "Sayings of the Century",
    "price": 8.95
  },
  {
    "category": "fiction",
    "author": "Herman Melville",
    "title": "Moby Dick",
    "isbn": "0-553-21311-3",
    "price": 8.99
  },
  {
    "category": "fiction",
    "author": "Evelyn Waugh",
    "title": "Sword of Honour",
    "price": 12.99
  },
  {
    "category": "fiction",
    "author": "J. R. R. Tolkien",
    "title": "The Lord of the Rings",
    "isbn": "0-395-19395-8",
    "price": 22.99
  }
]

Field-Extractor

>>> JSONPath("$.store.book[*](title,price)",result_type="FIELD").parse(data)
[
  {
    "title": "Sayings of the Century",
    "price": 8.95
  },
  {
    "title": "Sword of Honour",
    "price": 12.99
  },
  {
    "title": "Moby Dick",
    "price": 8.99
  },
  {
    "title": "The Lord of the Rings",
    "price": 22.99
  }
]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jsonpath-python-1.0.1.tar.gz (5.9 kB view hashes)

Uploaded Source

Built Distribution

jsonpath_python-1.0.1-py3-none-any.whl (7.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page