JSONPath 是一种JSON查询语言,其功能类似于XML 的 XPath。JSONPath 用于从 JSON 文档中选择和提取子部分.
1. JSONPath 依赖关系
要使用 JSONPath,我们需要包含它的依赖项,然后使用它.
语言
|
依赖性
|
---|---|
JavaScript
|
|
Node
|
npm install JSONPath |
PHP
|
|
Python
|
pip install jsonpath-rw |
Java
|
2. JSONPath 语法
JsonPath 表达式以美元符号($
)字符开头,它指的是查询的根元素。美元符号后跟一系列子元素,这些子元素通过点(代码)表示法或方括号(代码)分隔.
重要的 JSONPath 语法规则是:
$
符号指的是根对象或元素.@
符号指的是 当前对象或元素..
运算符是dot-child运算符,用于表示当前元素的子元素.[ ]
是下标运算符,用于表示当前元素的子元素(按名称或索引).*
运算符是通配符,返回 所有对象或元素,无论其名称如何.,
操作符是合并操作符, 返回 子集的并集 或指示的索引.:
运算符是数组切片运算符,因此您可以使用语法[start:end:step]
对集合进行切片,以返回集合的子集合.( )
运算符允许您以底层实现的脚本语言传递脚本表达式。然而,并非所有 JSONPath 实现都支持它.? ( )
查询符合特定条件的所有项目.
3. JSONPath 表达式示例
下面给出了 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. 使用 JavaScript 的 JSONPath 示例
我们有以下 JSON 文档。我们将对其应用 JSONPath 表达式.
{
"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
}
}
}
例 1
使用 JSONPath 查找所有作者的姓名.
var response = jsonPath(store , "$..author").toJSONString();
程序输出:
[
"Nigel Rees",
"Evelyn Waugh",
"Herman Melville",
"J. R. R. Tolkien"
]
例 2
使用 JSONPath 查找第 4 本书的详细信息。数组索引从零开始.
var response = jsonPath(store , "$..book[3]").toJSONString();
程序输出:
[
{
"category":"fiction",
"author":"J. R. R. Tolkien",
"title":"The Lord of the Rings",
"isbn":"0-395-19395-8",
"price":22.99
}
]