python3:jsonpath-rw处理Json对象

原文:https://www.cnblogs.com/shapeL/p/9106437.html

前提:接口自动化测试中,存在依赖情况:test_02的某个请求参数的值,需要依赖test_01返回结果中某个字段的数据,所以就先需要拿到返回数据中特定字段的值。这里使用到python中jsonpath-rw库

1.下载安装

pip install jsonpath-rw

2.导入

from jsonpath_rw import jsonpath,parse

3.例子介绍

1.返回的match数据,但我们想要的是value数据

jsonpath_expr = parse('foo[*].baz')
data = {'foo': [{'baz': 'news'}, {'baz': 'music'}]}
print([match for match in jsonpath_expr.find(data)])

运行结果:
[DatumInContext(value='news', path=Fields('baz'), context=DatumInContext(value={'baz': 'news'}, path=<jsonpath_rw.jsonpath.Index object at 0x025CA850>, context=DatumInContext(value=[{'baz': 'news'}, {'baz': 'music'}], path=Fields('foo'), context=DatumInContext(value={'foo': [{'baz': 'news'}, {'baz': 'music'}]}, path=This(), context=None)))), DatumInContext(value='music', path=Fields('baz'), context=DatumInContext(value={'baz': 'music'}, path=<jsonpath_rw.jsonpath.Index object at 0x025CA770>, context=DatumInContext(value=[{'baz': 'news'}, {'baz': 'music'}], path=Fields('foo'), context=DatumInContext(value={'foo': [{'baz': 'news'}, {'baz': 'music'}]}, path=This(), context=None))))]

2.获取匹配的数据match.value

jsonpath_expr = parse('foo[*].baz')
data = {'foo': [{'baz': 'news'}, {'baz': 'music'}]}
print([match.value for match in jsonpath_expr.find(data)])
运行结果:
['news', 'music']

3.match.value返回数据是一个list,我们要获取特定的值

jsonpath_expr = parse('foo[*].baz')
data = {'foo': [{'baz': 'news'}, {'baz': 'music'}]}
print([match.value for match in jsonpath_expr.find(data)][0])

运行结果:
news

转载于:https://www.cnblogs.com/ronyjay/p/11114848.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值