JSON with JSONPath

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.

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.

LanguageDependency
JavaScriptJSONPath JavaScript File
Nodenpm install JSONPath
PHPJSONPath PHP include file
Pythonpip install jsonpath-rw
Javajson-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

Subscribe
Notify of
guest
20 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments