Core Concepts, Syntax, and Applications of JSONPath
This article introduces JSONPath as a query language for JSON, explains its core concepts and basic syntax with examples, demonstrates various practical use cases such as data extraction, API testing, and shows tool support across Python, Java, and JavaScript.
1. Core Concept JSONPath is a query language for extracting specific fields or values from JSON data, with an expression syntax similar to XPath, supporting multiple operators and functions for fast data location.
2. Basic Syntax
2.1 Extract a single field Syntax: $.store.book[0].title Example JSON:
{
"store": {
"book": [
{"title": "Sword of Honour", "price": 12.99},
{"title": "Moby Dick", "price": 8.99}
]
}
}Result: $.store.book[0].title extracts the title "Sword of Honour".
2.2 Extract all elements in an array Syntax: $.store.book[*].title Result: extracts all book titles.
2.3 Filter condition Syntax: $.store.book[?(@.price > 10)].title Result: extracts titles of books with price greater than 10.
2.4 Recursive query Syntax: $..name Result: extracts all "name" fields at any depth.
3. Application Scenarios
3.1 Extract specific fields Example: extracting a student's name and math score.
{
"student": {
"name": "John Doe",
"scores": {"math": 85, "english": 90}
}
}Expressions: $.student.name and $.student.scores.math.
3.2 Extract array elements Extract all math scores from multiple students.
{
"students": [
{"name": "John Doe", "scores": {"math": 85}},
{"name": "Jane Smith", "scores": {"math": 92}}
]
}Expression: $.students[*].scores.math.
3.3 Extract specific items from nested arrays Extract product names with price > 50.
{
"orders": [
{"items": [{"name": "item1", "price": 45}, {"name": "item2", "price": 55}]},
{"items": [{"name": "item3", "price": 60}]}
]
}Expression: $.orders[*].items[?(@.price > 50)].name.
3.4 Extract selected attributes from nested objects Extract book titles and publication years.
{
"library": {
"books": [
{"title": "Book A", "year": 2020},
{"title": "Book B", "year": 2019}
]
}
}Expression: $.library.books[*]['title', 'year'].
4. JSONPath in API Testing
4.1 Extract data from API responses, e.g., token from login response.
{
"status": "success",
"data": {"token": "abc123"}
}Expression: $.data.token.
4.2 Validate response content, e.g., verify username.
{
"profile": {"name": "admin", "email": "[email protected]"}
}Expression: $.profile.name.
5. Tool Support
Python:
import jsonpath
result = jsonpath.jsonpath(data, "$.store.book[*].title")
print(result) # ['Sword of Honour']Java:
import com.jayway.jsonpath.JsonPath;
Object result = JsonPath.read(json, "$.store.book[*].title");
System.out.println(result);JavaScript:
const jsonpath = require('jsonpath-plus');
const result = jsonpath({ path: '$.store.book[*].title', json: data });
console.log(result); // ['Sword of Honour']6. Summary JSONPath is a powerful tool for quickly extracting required information from complex JSON data, widely used in automated API testing for data extraction and validation, and mastering its syntax and scenarios can greatly improve efficiency and accuracy in handling JSON.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
