Skip to content

A more powerful JSONPath implementations in modern python.

License

Notifications You must be signed in to change notification settings

goodkiwillc/jsonpath-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jsonpath-python

A more powerful JSONPath implementations in modern python.

Features

  • Light. (No need to install third-party dependencies.)
  • Support fields-extractor.
  • Powerful filtering function, including multi-selection, inverse-selection filtering.
  • Powerful sorting function, including sorting by multiple fields, ascending and descending order.

Issues

  • Not support parent operator.

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
        }
    }
}

Fields-Extractor

>>> JSONPath("$.store.book[*][title,price]",result_type="FIELD").parse(data)
{
  "store": {
    "book": [
      {
        "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
      }
    ]
  }
}

Multi-selection and inverse-selection filtering

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

Sorting by multiple fields, ascending and descending order

>>> 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
  }
]

About

A more powerful JSONPath implementations in modern python.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Python 92.2%
  • Makefile 7.8%