语法
| JsonPath 语法 | 简单描述 |
|---|---|
$ | 根节点 |
@ | 当前节点 |
.or[] | 子节点 |
.. | 选择所有符合条件的节点 |
* | 所有节点 |
[] | 迭代器标示,如数组下标 |
[,] | 支持迭代器中做多选 |
[start:end] | 数组切片运算符 |
?() | 支持过滤操作 |
() | 支持表达式计算 |
例子
json 数据
{
"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",
"author":"DC-bicycle",
"price": 19.95
}
},
"expensive": 10,
"author":"DC-store",
"price": 33.33
}
以上面 json 数据为例,说明 JsonPath 语法使用:
| JsonPath 表达式 | 描述 |
|---|---|
$.store.book[*].author | store.book节点下所有的author值 |
$..author | 所有的 author 值 |
$.store.* | store节点下所有的值,包括book、bicycle |
$.store..price | store节点下所有的price值 |
$..book[2] | 第三个book |
$..book[-2] | 倒数第二个book |
$..book[0,1] | 第一个、第二个book |
$..book[:2] | 下标0到2的book |
$..book[1:2] | 下标1到2的book |
$..book[-2:] | 最后2个book |
$..book[2:] | 下标2的book到最后 |
$..book[?(@.isbn)] | 所有含有isbn的book |
$.store.book[?(@.price < 10)] | 在store节点下,price小于10的book |
$..book[?(@.price <= $['expensive'])] | 在store节点下,不是"expensive"的book |
$..book[?(@.author =~ /.*REES/i)] | 匹配正则表达式/.*REES/i的book |
$..* | 每个节点都输出一次 |
$..book.length() | book的数目 |
PS:以上 JsonPath 可在这里验证正确性