在接口测试的过程中,我们经常会接触到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. Linux可以生产uImage

    默认kernel只生产Image和zImage,若想让kernel生产uImage,需要用到mkimage,这个是uboot可以提供的,位于uboot/tool/目录下,将其加入到环境变量即可.

  2. Python练习三

    1.使用while和for循环分别打印字符串s=’asdfer’中每个元素. s = "asdfer" index = 0 while index < int(len(s)) ...

  3. admin-2

    Linux是一种服务器操作系统 操作系统:一堆软件的集合,可以让计算机硬件正常工作 • UNIX诞生,1970-1-1(Linux系统时间的起点) • Linux之父,Linus Torwalds 内 ...

  4. H5 实现图片上传预览

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  5. ARM Cortex M0 程序映像和启动流程

  6. dataframe基础

    1 df[i]   其中i是0,1,2,3,...  此时选中的是dataframe的第i列 2 dataframe查看每一列是否有缺失值 temp = data.isnull().any() #列中 ...

  7. Ntrip协议简介(转)

    原文地址:https://blog.csdn.net/sinat_19447667/article/details/67637167 1 什么是Ntrip? CORS(Continuously Ope ...

  8. JavaScript中数组的应用

    Array的应用 1)创建 new Array();new Array(size);new Array(element,element,...,element); 2).Array对象属性 const ...

  9. 远程访问服务器tensorboard

    转自https://blog.csdn.net/Hansry/article/details/83004648 1. 在登录远程服务器的时候使用命令: : server_name@server.add ...

  10. JVM-垃圾收集算法

    新生代:复制算法,IBM研究过,约98%对象是“朝生夕死”,所以不需要按照1:1来划分:HotSpot中默认是8:1:1,即每次新生代可用空间为90%,只有10%会被“浪费”, 当Survivor空间 ...