在接口测试的过程中,我们经常会接触到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值

 import jmespath
b = {'a': {'b': {'c': {'d': 'value'}}}}
result = jmespath.search("a.b.c.d",b)
print(result )
 # 结果 'value'

四.切片

使用切片选择列表的连续子集。 JMESPath跟Python切片语法一样。你可以指定起始索引(包含)和结束索引(不包含),我们来看一些例子,通过切片提取下面这个数组:

 import jmespath

 list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 #从前到后或取3个元素
list_result = jmespath.search('[0:3]',list)
print(list_result) # 结果 [0, 1, 2] # 获取列表中所有偶数
doubule_list = jmespath.search('[::2]',list)
print(doubule_list) #结果 [0, 2, 4, 6, 8]

五. 推测

推测是JMESPath的关键特性之一,它允许你将表达式应用于元素集合。JMESPath有五种推测:

  • 列表推测
  • 切片推测
  • 对象推测
  • 展平推测
  • 过滤推测

JMESPath内置了丰富的函数,可以在不同的数据类型上运行。

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

jmespath官方API

jmespath 在线提取检验器

json jmespath的使用的更多相关文章

  1. jmeter相关知识学习记录

    基于Jmeter5.2.1 断言之响应断言 响应断言:对服务器的响应接口进行断言校验,来判断接口测试得到的接口返回值是否正确. 测试字段就是指要断言的内容的匹配处. 响应文本:就是响应的body部分: ...

  2. JMeter关联陌生又熟悉

    JMeter关联是什么 JMeter关联,这几个字看着可能会有点陌生,实际上却是工作中经常会做的一件事情,尤其是接口自动化,它指的是把一个接口的响应作为另一个接口的参数,从而把接口关联起来. JMet ...

  3. Promtail Pipeline 日志处理配置

    转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247492144&idx=1&sn=a1cc13a642 ...

  4. 比jsonpath 更方便的json 数据查询JMESPath 使用

      类似xml 的xpath json 有jsonpath 都是为了方便进行数据查询,但是jsonpath 的功能 并不是很强大,如果为了方便查询可以使用jmespath. 以下为简单使用: 查询格式 ...

  5. jmespath库解析json

    在测试过程中,经常会去JSON中的某个值,jmespath可以是除了jsonpath的另外一种选择. 下面通过几个例子来说明jmespath在python的使用 jmespath python安装 非 ...

  6. 编写一个简单的基于jmespath 的prometheus exporter

    目的很简单,因为系统好多监控指标是通过json 暴露的,并不是标准的prometheus metrics 格式,处理方法 实际上很简单,我们可以基于jsonpath 解析json数据,转换为prome ...

  7. 【jmespath】—3. 进阶 Object Projections

    继续,来看Object Projections. 一.Object Projections 上面说的是列表投影,只适用于列表.那么对于json对象,可以用对象投影. 投影最终返回的仍然是个列表,只不过 ...

  8. 【jmespath】—2. 进阶 List and Slice Projections

    Projections翻译的话说实话我也不知道翻成什么比较准确,姑且就叫"投影"吧,不过带来的功能确实非常的强大.好用. 首先,我先说下我的理解: 通配符 * 通配符生成的是一个l ...

  9. 【jmespath】—1. 基础用法

    一.jsonpath 之前我写接口自动化测试时候,对于复杂的json返回,会使用jsonpath这个第三方库,就像写xpath一样,方便的查询json元素. 因为之前写WEB自动化时候,总用xpath ...

随机推荐

  1. JavaScript 之存取器属性

    首先介绍一下此篇随笔的主角: Object.getOwnPropertyDescriptor 和 Object.getOwnPropertyDescriptors 通过这两个api,可以访问除 nul ...

  2. 一个权重的物体拷贝权重给多个(oneWeightToMany)

    你是否在做项目的时候经常会遇见一个物体带权重需要拷贝给其他物体,这时候其他物体多的数不胜数 你怎么办呢? 举例:假如一头狮子 身体你已经做好了,但是模型师把半个身体都做满了垂落的实体模型毛发,你是否感 ...

  3. windows 下的 Apache SSL证书配置

    一.获取证书 1.从腾讯云获取 (1)登录腾讯云后,在“产品”中搜索[ssl]然后会得到 "SSL证书“,进入后点“立即选购” 这样就完成了证书的申请,等待一个工作日的审核. 审核通过后,进 ...

  4. IDT表连接

    一.table A为基础表,左外连接table B,若要限制B的条件,需加(+),否则会对结果集以B表的条件进行过滤. DWD_REASON_CODE.CODE(+)=DWR_EDA_CL_TST_D ...

  5. Spring-Cloud-Netflix

    Spring Cloud Netflix组件以及部署 (1)Eureka,服务注册和发现,它提供了一个服务注册中心.服务发现的客户端,还有一个方便的查看所有注册的服务的界面. 所有的服务使用Eurek ...

  6. wps excel

    ET.Application etApp;ET.workbook etbook;ET.Worksheet etsheet ;ET.Range etrange;//获取工作表表格etApp = new  ...

  7. Linux----------mysql进阶

    目录 一.破解密码以及无密码登录 1.1 破解密码 1.2 无密码登录 1.3 定义不同的客户端 1.4 家目录下 二.视图 三.函数 3.1 系统函数 3.2 自定义函数 3.3 自定义函数中定义局 ...

  8. 使用VS2015编译xlslib库

    环境: win7_x64,VS2015 开始: 一.下载xlslib库 xlslib-package-2.5.0.zip 解压到一个指定目录,如E:\library\xlslib-package-2. ...

  9. linux 软件应用

    grub2 安装grub2到某分区 mount /mnt/dev /dev/sdb2 //这里选择你刚才分区的第二个分区 sudo grub-install --root-directory=/mnt ...

  10. linux下tomcat启动慢解决方法

    前言 最近在工作中遇到一个问题,在Linux下Tomcat 8启动很慢,且日志上无任何错误,在日志中查看到如下信息: Log4j:[2017-08-2715:47:11] INFO ReadPrope ...