在接口测试的过程中,我们经常会接触到json格式respones,我们会经常去做取JSON中某个值的操作,可以用jmespath分析、转换和选择性的提取JSON数据进行操作,功能非常强大,易读。
一. 安装
pip install jmespath
二. 基本表达式
- 标识符:最基本的表达式,提取单个属性值;
- 点表达式:提取JSON对象中的嵌套值;
- 索引表达式:选择列表中的特定元素
如果JSON中不存在标识符,则返回null值,我们来看一些例子:
----------------------------------------------------------------------------------------------------------------
json jmespath表达式 结果
{"a": {"b": {"c": {"d": "value"}}}} a.b.c.d “value”
["a", "b", "c", "d", "e", "f"] [2] "c"
----------------------------------------------------------------------------------------------------------------
三.查询一个key值
1 import jmespath 2 b = {'a': {'b': {'c': {'d': 'value'}}}} 3 result = jmespath.search("a.b.c.d",b) 4 print(result )
# 结果 'value'
四.切片
使用切片选择列表的连续子集。 JMESPath跟Python切片语法一样。你可以指定起始索引(包含)和结束索引(不包含),我们来看一些例子,通过切片提取下面这个数组:
1 import jmespath 2 3 list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 4 5 #从前到后或取3个元素 6 list_result = jmespath.search('[0:3]',list) 7 print(list_result) 8 9 # 结果 [0, 1, 2] 10 11 # 获取列表中所有偶数 12 doubule_list = jmespath.search('[::2]',list) 13 print(doubule_list) 14 15 #结果 [0, 2, 4, 6, 8]
五. 推测
推测是JMESPath的关键特性之一,它允许你将表达式应用于元素集合。JMESPath有五种推测:
- 列表推测
- 切片推测
- 对象推测
- 展平推测
- 过滤推测
JMESPath内置了丰富的函数,可以在不同的数据类型上运行。
---------------------------------------------------------------------------------------------------------------------------------