JSONPath is a query language for JSON with features similar to XPath for XML. JSONPath is used for selecting and extracting a sub-section from the JSON document.
1. JSONPath Dependencies
To use JSONPath, we will need to include its dependency and then use it.
| Language | Dependency |
|---|---|
| JavaScript | JSONPath JavaScript File |
| Node | npm install JSONPath |
| PHP | JSONPath PHP include file |
| Python | pip install jsonpath-rw |
| Java | json-path |
2. JSONPath Syntax
A JsonPath expression begins with the dollar sign ($) character, which refers to the root element of a query. The dollar sign is followed by a sequence of child elements, which are separated via dot (code) notation or via the square brackets (code).
The important JSONPath syntax rules are:
$symbol refers to the root object or element.@symbol refers to the current object or element..operator is the dot-child operator, which you use to denote a child element of the current element.[ ]is the subscript operator, which you use to denote a child element of the current element (by name or index).*operator is a wildcard, returning all objects or elements regardless of their names.,operator is the union operator, which returns the union of the children or indexes indicated.:operator is the array slice operator, so you can slice collections using the syntax[start:end:step]to return a subcollection of a collection.( )operator lets you pass a script expression in the underlying implementation’s script language. It’s not supported by every implementation of JSONPath, however.? ( )to query all items that meet a certain criteria.
3. JSONPath Expression Examples
Below given are few examples of JSONPath.
$.store.book[0].title
$.store.book[*].title
$..book[3]
//or using brackets
$['store']['book'][0].['title']
$['store']['book'][*].['title']
$..['book'][3]
$.store.book[?(@.price < 10)].title
4. JSONPath Example using JavaScript
We have the following JSON document. We will apply the JSONPath expressions to it.
{
"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
}
}
}
Example 1
Using JSONPath to find the names of all authors.
var response = jsonPath(store , "$..author").toJSONString();
Program output:
[
"Nigel Rees",
"Evelyn Waugh",
"Herman Melville",
"J. R. R. Tolkien"
]
Example 2
Using JSONPath to find the details for book number 4. The array index is zero-based.
var response = jsonPath(store , "$..book[3]").toJSONString();
Program output:
[
{
"category":"fiction",
"author":"J. R. R. Tolkien",
"title":"The Lord of the Rings",
"isbn":"0-395-19395-8",
"price":22.99
}
]
Comments