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的使用的主要内容,如果未能解决你的问题,请参考以下文章
使用 jsonpath 表达式的数组大小 - Stefan Goessner JsonPath
使用 JSONPATHS 文件到 Redshift 的 JSON 文件 - 无效的 jsonpath 格式
使用JsonPath的read方法报错“read(Ljava/lang/String;Ljava/lang/String;[Lcom/jayway/jsonpath/Filter;)“