json jmespath的使用

在接口测试的过程中,我们经常会接触到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内置了丰富的函数,可以在不同的数据类型上运行。

---------------------------------------------------------------------------------------------------------------------------------

jmespath官方API

jmespath 在线提取检验器

 

posted @ 2019-03-09 09:25  Evies  阅读(850)  评论(0编辑  收藏  举报