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

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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%