JsonPath 运算符使用

这篇博客介绍了JsonPath的使用,包括JsonPath的基本概念、运算符的应用,并提供了具体的案例和说明,便于读者理解和应用JsonPath进行Json数据的提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

因为之前用到Jmeter的Json 提取器涉及到JsonPath的使用,因此查找了一些文章,将里面的精华部分运算符的使用提取出来记录以下,方便自己以后使用。

JsonPath

  • JsonPath参照XPath解析xml的方式来解析Json
  • JsonPath用符号$表示最外层对象,类似于Xpath中的根元素
  • JsonPath可以通过点语法来检索数据,如: shell $.store.book[0].title
  • 也可以使用中括号[]的形式,如 shell $['store']['book'][0]['title']

运算符(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例子及说明

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)]所有包含地址的老师信息(jsonpath_rw不支持)
$.lemon.teachers[?(@.age < 20)]所有年龄小于20的年龄信息(jsonpath_rw不支持)

更多jsonpath_rw用法参考:

https://pypi.org/project/jsonpath-rw/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值