如何Use JSONPath 到 Query JSON
提取 specific values from deeply nested JSON using JSONPath expressions.
问题
你需要提取特定 fields 从大, 深 nested JSON document 无 writing 自定义 traversal 代码.
前置条件
- Understanding 的 JSON 结构
- 熟悉路径 expressions
步骤
-
1. Learn the JSONPath syntax
JSONPath uses dot notation for object keys ($.store.book) and brackets for array indices ([0]) or filters ([?(@.price < 10)]). The $ represents the root. Wildcards (*) match all elements. This is similar to XPath for XML.
输入$.store.book[0].title输出first book's title -
2. Write and test the expression
Construct the JSONPath expression for the data you want to extract. Test it against your JSON document. Filters use @ to reference the current element. Multiple matches return an array of results.
输入$.store.book[?(@.price<10)].title输出titles of books under $10 -
3. Handle edge cases
Not all JSONPath implementations support the full spec. Filters, recursive descent ($..), and script expressions may vary. Check your implementation's capabilities. Handle missing paths gracefully — they return empty results, not errors.
输入$..author输出all authors at any depth
预期结果
特定 values extracted 从 JSON document matching JSONPath 表达式.
常见错误
- Filter syntax not supported
- Different JSONPath implementations support different filter syntaxes. Check the documentation for your specific implementation.
- Path returns empty unexpectedly
- Verify the path matches the JSON structure. Check for case sensitivity in keys and correct array indices.
排障指引
- If the path returns nothing, print the JSON structure and verify each segment exists.
- Use recursive descent ($..) to find keys at any depth if you are unsure of the exact path.
安全限制
- JSONPath is a read-only query language. It does not modify data or execute code.
- All querying is local.