jsonpath的使用

Posted fyangq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsonpath的使用相关的知识,希望对你有一定的参考价值。

 

运算符(Operators)

运算符说明
$ 根元素
@ 当前元素
* 通配符,可以表示任何元素
.. 递归搜索
. 子节点(元素)
[‘‘ (, ‘‘)] 一个或者多个子节点
[ (, )] 一个或者多个数组下标
[start:end] 数组片段,区间为[start,end)
[?()] 过滤器表达式,其中表达式结果必须是boolean类型,如可以是比较表达式或者逻辑表达式

 

JsonPath举例

{ "lemon": { "teachers": [ { "id": "101", "name": "华华", "addr": "湖南长沙", "age": 25 }, { "id": "102", "name": "韬哥", "age": 28 }, { "id": "103", "name": "Happy", "addr": "广东深圳", "age": 16 }, { "id": "104", "name": "歪歪", "addr": "广东广州", "age": 29 } ], "salesmans": [ { "id": "105", "name": "毛毛", "age": 17 }, { "id": "106", "name": "大树", "age": 27 } ] }, "avg": 25 }

JsonPath路径说明
$.lemon.teachers[*].name 获取所有老师的的名称
$..name 获取所有人的名称
$.lemon.* 所有的老师和销售
$.lemon..age 所有人的年龄
$..age 所有人的年龄
$.lemon.teachers[*].age 所有老师的年龄
$.lemon.teachers[3] 索引为3(第4个)老师的信息
$..teachers[3] 索引为3(第4个)老师的信息
$.lemon.teachers[-2] 倒数第2个老师的信息
$..teachers[-2] 倒数第2个老师的信息
$..teachers[1,2] 第2到第3个老师的信息
$..teachers[:2] 索引0(包含)到索引2(不包含)的老师信息
$..teachers[1:3] 索引1(包含)到索引3(不包含)的老师信息
$..teachers[-2:] 最后的两个老师的信息
$..teachers[2:] 索引2开始的所有老师信息
$..teachers[?(@.addr)] 所有包含地址的老师信息
$.lemon.teachers[?(@.age < 20)] 所有年龄小于20的年龄信息
$..teachers[?(@.age <= $[‘avg‘])]] 小于或等于平均年龄的老师信息
$..teachers[?(@.name =~ /.*PPY/i)] 所有名称满足正则表达式的老师信息 (忽略大小写)
$..* 所有的信息
$.lemon.teachers.length() 老师的数量

以上是关于jsonpath的使用的主要内容,如果未能解决你的问题,请参考以下文章

Python_jsonPath模块的使用

使用 jsonpath 表达式的数组大小 - Stefan Goessner JsonPath

使用 JSONPATHS 文件到 Redshift 的 JSON 文件 - 无效的 jsonpath 格式

使用JSONPath

Snack3 之 Jsonpath使用

使用JsonPath的read方法报错“read(Ljava/lang/String;Ljava/lang/String;[Lcom/jayway/jsonpath/Filter;)“