Python中jmespath解析提取json数据

        在做接口自动化,测试断言时,我们经常需要提取接口的的响应数据字段,以前用过jsonpath,有几篇相关文章,可以参考下(Python深层解析json数据之JsonPath【Jmeter篇】后置处理器之正则提取器、Json提取器 、Jmeter之json提取器实战(二)Jmeter之json条件提取实战(三) )今天我们来介绍下jmespath用法,可以帮我们进行数据的灵活提取,下面通过案例来说明jmespath在python的使用。

jmespath官方文档

https://jmespath.org/tutorial.html#projections

jmespath安装

pip install jmespath

aa1953d507197441acc9a3a473842829.png

字典,通过key名称提取

import jmespath
dict_1 = {"a": "foo", "b": "bar", "c": "baz"}
print(jmespath.search("c",dict_1))


baz

嵌套字典,层级提取

import jmespath
dict_1 = {"a": {"b": {"c": {"d": "value"}}}}
print(jmespath.search("a.b.c.d",dict_1))


value


import jmespath
dict_1 = {"a": {"b": {"c": {"d": "value"}}}}
print(jmespath.search("a.b.c",dict_1))


{'d': 'value'}

列表,通过索引提取

import jmespath
list_1 = ["a", "b", "c", "d", "e", "f"]
print(jmespath.search("[1]",list_1))


b

列表、字典嵌套提取

import jmespath
source = {"a": {
  "b": {
    "c": [
      {"d": [0, [1, 2]]},
      {"d": [3, 4]}
    ]
  }
}}
print(jmespath.search("a.b.c[0].d[1][0]",source))


1

切片提取列表中值

import jmespath
source = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(jmespath.search("[0:5]",source))


[0, 1, 2, 3, 4]


import jmespath
source = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(jmespath.search("[5:10]",source))


[5, 6, 7, 8, 9]


import jmespath
source = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(jmespath.search("[:5]",source))


[0, 1, 2, 3, 4]


import jmespath
source = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(jmespath.search("[::2]",source))


[0, 2, 4, 6, 8]

列表取值使用 * 通配符

1、取出列表中所有 first对应的值

 people[*].first

import jmespath
source = {
  "people": [
    {"first": "James", "last": "d"},
    {"first": "Jacob", "last": "e"},
    {"first": "Jayden", "last": "f"},
    {"missing": "different"}
  ],
  "foo": {"bar": "baz"}
}
print(jmespath.search("people[*].first",source))


['James', 'Jacob', 'Jayden']

2、取出列表中前2个first 对应的值

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王大力测试进阶之路

打赏博主喝瓶水吧!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值