Python JsonPath
A Python tool that parses JSON documents using JsonPath
Inspired by: https://github.com/json-path/JsonPath
Quick Start
install it using the pip command
pip install pyjsonpath
Then:
>>> from pyjsonpath import JsonPath
>>> obj = {"name": "jsonpath"}
>>> JsonPath(obj, "$.name").load()
['jsonpath']
>>>
JsonPath Syntax
- General Operators
| operators | description |
|---|---|
| $ | The root element to query. This starts all path expressions. |
| @ | The current node being processed by a filter predicate. |
| * | Wildcard. Available anywhere a name or numeric are required. |
| .. | Deep scan. Available anywhere a name is required. |
| . | Dot-notated child |
| [' |
Bracket-notated child or children |
| [ |
Array index or indexes |
| [start:end] | Array slice operator |
| [?( |
Filter expression. Expression must evaluate to a boolean value. |
- Filter Operators
| operators | description |
|---|---|
| == | left is equal to right (note that 1 is not equal to '1') |
| != | left is not equal to right |
| < | left is less than right |
| <= | left is less or equal to right |
| > | left is greater than right |
| >= | left is greater than or equal to right |
| =~ | left matches regular expression [?(@.name =~ /foo.*?/i)] |
| in | left exists in right [?(@.size in ['S', 'M'])] |
| nin | left does not exists in right |
| subsetof | left is a subset of right [?(@.sizes subsetof ['S', 'M', 'L'])] |
| anyof | left has an intersection with right [?(@.sizes anyof ['M', 'L'])] |
| noneof | left has no intersection with right [?(@.sizes noneof ['M', 'L'])] |
| size | size of left (array or string) should match right |
| empty | left (array or string) should be empty |
- Functions
| operators | description |
|---|---|
| min() | Provides the min value of an array of numbers |
| max() | Provides the max value of an array of numbers |
| avg() | Provides the average value of an array of numbers |
| stddev() | Provides the standard deviation value of an array of numbers |
| length() | Provides the length of an array |
| sum() | Provides the sum value of an array of numbers |
| keys() | Provides the property keys (An alternative for terminal tilde ~) |