{"name":"alyson","sex":"male"} #value为json对象 {"name":"alyson","sex":"male","info":{"hobby":"music","age":"26"}} #value为数组[] {"name":"alyson","sex":"male","info":{"hobby":["music","game"],"age":"26"}} #value为数组嵌套对象 {"student":[{"name":"alyson","age":"20","sex":"male","hobby":["book"],"vipid":"1"},{"name":"wangwu","age":"25","sex":"female","hobby":["music","travel"],"vipid":"2"},{"name":"lisi","age":"27","sex":"male","hobby":["basketball","fooyball"],"vipid":"3"}]}

2、操作步骤

将复杂的json响应,用json在线解析器进行解析分清楚层次

拿到一个复杂的json响应数据,打开jmeter--新建线程组--添加Java请求--将json数据放到resultdata中--添加查看结果树--选择json path tester-在json path expression中填入在线解析的json层级路径--点击test即可查看相关结果

操作步骤接上步:添加json提取器--输入提取变量名称--输入上一步测试过的json path--添加调试取样器--执行Java请求即可查看提取到的数据

3、json Path语法详解:一个json节点一个json节点往下拿数据

$:根节点 :提取所有的json对象

. or [ ] :用来连接父子节点

.  :要求value本身是一个json对象才可以继续往下连接

eg: $.familyName: 表示提取根节点下familyName的值

$.familyMembers.name : 表示提取根节点下的familyMembers节点下的name的值

但是碰到powers的value是一个数组就要用[*]取出数组的值再进行下一步取值

eg: $.familyMembers[*].powers :表示提取根节点下的familyMembers节点下的powers的值

[*] : * 可以换成元素下标[0]表示数组中第一个元素

[  ] :也可以用来提取子节点的值  用法:

$["familyName"]  等价于$.familyName

$["familyName","hometown"]

但.只能连接一个子节点,而[  ]可以选择多个子节点构成一个新的结果集

..  : 相当于xpath中的相对路径

$.name :提取根节点下的name节点的值

$..name : 表示提取所有根节点下以及子节点下name节点的值

$.familyMembers..name : 表示提取familyMembers节点下及所有子节点下的name节点的值

针对数组节点的处理:下标提取、切片

a、通过下标提取:数组中的下标从0开始,以此类推

$.familyMembers[*]: 表示提取familyMembers中所有的元素的值

$.familyMembers[0]:表示提取familyMembers中第一个元素的元素的值

$.familyMembers[1]:表示提取familyMembers中第二个元素的元素的值

b、枚举方式:

array[index1,index2...,indexN]

eg:$.familyMembers[0,2] :表示提取familyMembers数组中第一个元素和第三个元素的值

c、切片方式:array[start:end] 表示提取数组中半闭半开区间的值,即包含start但不包含end下标元素的值

array[0:1]

eg:$.familyMembers[0:1] :表示提取familyMembers数组中第一个元素的值

eg:$.familyMembers[0:2] :表示提取familyMembers数组中第一个元素和第二个元素的值

如果start为空,表示从0开始

如果end为空,表示从start开始到结束的所有下标的值

eg:$.familyMembers[:2] :等价于$.familyMembers[0:2]

eg:$.familyMembers[1:] :表示提取familyMembers数组中从下标一开始到最后一个元素的值

特殊格式:

array[ : 负数]

array[ 负数: ]

负数下标表示倒数第N个元素,-1表示倒数第一个元素,-2表示倒数第二个元素

eg:$.familyMembers[:-1] : 表示提取数组中除了最后一个元素的所有元素

eg:$.familyMembers[-1:] :表示提取familyMembers数组中最后一个元素的值

eg:$.familyMembers[-2:-1] :表示提取数组中倒数第二个元素的值

d、过滤表达式:针对复杂的业务需求,我们可以通过过滤表达式的方式来对数组的元素进行过滤,从而获取我们要的值

*常用过滤表达式的操作符:

== 、!= 、< 、<= 、> 、>=

=~  正则匹配

In 存在于

Nin 不存在于

Subsetof 子集

||  或者

@  表示当前对象

$.familyMembers[?(@.isVIP==true)]

familyMembers是一个数组节点,数组的值是json对象

获取的是isVIP=true的数组元素

$.familyMembers[?(@.age>35)]表示提取年龄大于35的familyMembers对象

$.familyMembers[?(@.name=~/张.*/)]

表示提取familyMembers中姓张的成员的信息

=~ 正则匹配

.在正则中代表任意字符  *修饰 . 表示0到任意多个的数量  .*代表任意数量任意字符

$.familyMembers[?(@.name=~/.*张.*/)]

表示提取familyMembers中姓名中含张的成员的信息

$.familyMembers[?(@.name=~/张.{1,2}/)]

表示提取familyMembers中姓名中张X和张XX的成员的信息

$.familyMembers[?(@.age In ["30","35"])] 等价于$.familyMembers[?(@.age == "30" || @.age == "35")]

$.familyMembers[?(@.age Nin ["30","35"])] 等价于$.familyMembers[?(@.age != "30" && @.age != "35")]

Subsetof 子集

$.familyMembers[?(@.hobbys subsetof ["Cooking","Music","Basketball"])]

表示提取爱好为["Cooking","Music","Basketball"]子集的成员信息(包含一项、二项、三项)

4、json提取多个节点的数据:用分号隔开多个节点

匹配数字0代表随机,-1代表所有,也可以指定数字

JSON (JavaScript Object Notation)是一种轻量级的 数据 交换格式。它可以让人们很容易的进行阅读和编写,同时也方便了机器进行解析和生成,适用于进行 数据 交互的场景,比如网站前台与后台之间的 数据 交互。简单说就是javascript中的对象和数组,通过这两种结构可以表示各种复杂的结构。对象:对象在js中是花括号{}括起来的内容, 数据 结构为{key:value,key:value,…}这样的键值对结构。 JsonPath 是一种简单的方法来 提取 给定 JSON 文档的部分内容。 Data may be interactively found and extracted out of JSON structures on the client without special scripting. JSON data requested by the client can be reduced to the relevant parts on the server, such minimizing the ba 总结本文介绍了 JSONPath 的基本语法和用法,并为您展示了如何封装和使用 JSONPath 方法来处理和操作 JSON 数据 。通过封装 JSONPath 方法,我们可以更方便地进行 数据 查询和 提取 ,提高处理 JSON 数据 的效率和代码可读性。上述代码中,我们定义了一个 jsonpath 函数,接受两个参数:expr表示 JSONPath 表达式,data表示要处理的 JSON 数据 。6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础。 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar ​ JSON (JavaScript Object Notation)是一种轻量级的 数据 交换格式。它可以让人们很容易的进行阅读和编写,同时也方便了机器进行解析和生成,适用于进行 数据 交互的场景,比如网站前台与后台之间的 数据 交互。简单说就是javascript中的对象和数组,通过这两种结构可以表示各种复杂的结构。 定义一个字典,存放用户的姓名/年龄/住址等信息。"users":[使用$.users获取第1个节点users的全部信息#结果如下使用$.users[*]获取users对应数组内所有的 数据 #结果如下: 可以发现该结果返回的列表比上面的少一个[]使用$.users[0,2]获取users的数组内第1和第3个 数据 #结果如下使用$.users.[name]获取数组内所有的name的值#结果如下使用$.users[0].name获取数组第1个索引对应的name#结果如下['lili'] 此篇是在自动化项目中实现更好的方式,设置一个config.py文件,在调用过程中,作为临时 数据 存储。需要的 数据 set进这个大字典中, 取值 的时候直接从这个大字典中根据key进行 取值 。 # coding:utf-8 from auto_api.Public import configs import jsonpath #可以获取 json 字符串中所有位置的字段 def se