反馈已提交
网络繁忙
JsonPath 表达式可用于解析 JSON 结构的数据,官方 API 文档:https://github.com/json-path/JsonPath,本文仅为对英文官方文档的翻译。
JsonPath 的根元素总是被称为 $,无论它是一个对象还是数组。
在 JsonPath 表达式中,可以使用点符号,例如:$.store.book[0].title;也可以使用方括号,例如:$['store']['book'][0]['title']。
$
如:store.book 或 store["book"]
如:book[0,1] 或 $..book[0].["category","author"]
如:book[0:2] 或 book[-2:0]
?()
如:book[?(@.price<10)]
如:book.* 或 book[*]
也可以和过滤结合使用,作为正则表达式的元素
如:book[?(@.author =~ /.*ees/)]
过滤器是用于筛选数组的逻辑表达式,一个典型的过滤器是[?(@.age > 18)] ,其中,@ 表示当前正被过滤器处理的元素。通过加入逻辑运算符 && 和 || ,可以创造出更复杂的过滤器。字符串的值必须使用单引号或双引号括起来,如 ([?(@.color == 'blue')] 或[?(@.color == "blue")])。
左右相等
注:会对比数据类型,如 1 和 '1' 不相等
如:[?(@.name =~ /foo.*?/i)]
如:[?(@.size in ['S', 'M'])]
nin
左侧不存在于右侧
subsetof
左侧是右侧的子集
如:[?(@.sizes subsetof ['S', 'M', 'L'])]
anyof
左侧和右侧有交集
如:[?(@.sizes anyof ['M', 'L'])]
noneof
左侧和右侧没有交集
如:[?(@.sizes noneof ['M', 'L'])]
size
左侧和右侧(数字/字符串)一样大
左侧(数字/字符串)为空
可以在路径的末端调用函数。
min()
对于一个数值型数组,找到最小值
双精度
max()
对于一个数值型数组,找到最大值
avg()
对于一个数值型数组,求平均值
stddev()
对于一个数值型数组,求标准差
length()
求数组的长度
整型
sum()
对于一个数值型数组,求总和
示例:
假设有这样一个 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", "price": 19.95 } }, "expensive": 10}
$.store.book[*].author
找到 store 元素下的所有书籍,输出他们的作者
$..author
根元素下所有的作者
$.store.*
store 元素下所有的东西,无论是书籍还是自行车
$.store..price
store 元素下的所有东西的价格
$..book[2]
第 3 本书
$..book[-2]
倒数第 2 本书
$..book[0,1]
$..book[:2]
前2本书
前2本书(注意:第一本书的索引是0)
$..book[1:2]
第2本书
$..book[-2:]
最后第2本和最后第1本书
$..book[2:]
第3到最后1本书
$..book[?(@.isbn)]
所有书籍中,含有 isbn 属性的书籍
$.store.book[?(@.price < 10)]
所有书籍中,价格低于10的书籍
$..book[?(@.price <= $['expensive'])]
所有数据中,价格没有超过 expensive 的书籍( expansive 的值为10)
$..book[?(@.author =~ /.*REES/i)]
找出符合正则表达式的书籍。
此正则表达式的含义:作者名以REES结尾,REES不区分大小写
$..*
输出根元素下的所有内容
$.store.book.length()
书籍的总数
フィードバック
鼠标选中内容,快速反馈问题
鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。
不再提示
10s后关闭