
如上示例为单元素获取方法,如果要获取多个元素,则参数名称写多个,用逗号分开;
而json提取器语法用分号隔开,应当与参数名称一一对应; 匹配编号一样的需要用分号隔开,与参数名称一一对应; 默认值同样用分号隔开,与参数名称一一对应; Json提取器语法说明 完整的语法说明请见https://github.com/json-path/JsonPath 调试方法: 在View Result Tree中选择JSON Path Tester,即可展开如下图的右侧内容,输入表达式即可拿来测试书写的Json提取器表达式是否能正常工作: 下面这个图片中的json字符串即为测试对象: 1、获取第一层中的某个value值: 获取jsonrpc这个key的value值: 输入$.jsonrpc: 正常获取到结果 2、获取第二层List中某个key的value值 譬如我们要获取result的值中第一个元素的name的值,预期应当为111,使用如下语句: $.result[0].name 结果符合预期,此处注意列表编号从0开始; 3、获取第三层的某个value值 譬如我们要获取528,使用语句为$.result[1].approver[0] 从这里可知,我们书写表达式时需要根据是map还是list来进行区别,list需要使用[n]标号,而map则不用,每一层用.来区分即可; 4、获取列表下全部的某一个元素 譬如我们要获取全部的key为name的value值,可以使用如下语句$.result[*].name 获取到的为一个列表,其有三个值,符合预期; 那么获取第三层中所有的的第一个元素呢? 表达式为$.result[*].approver[0],结果如下: 符合预期; 这里说明下,使用*号意味着获取所有列表元素; 此种情况下返回的为一个list,那么如果此list被放入参数var中,那么我如果想获取var中某一个值譬如528该如何使用呢?答案就是在参数名后边加_n,其中n为编号,从1开始; ${var_2}即可获取到列表中第二个元素即528; 5、提取特定条件的某个值 如下我想提取object_id为0的那个元素的id值: 可以使用语法$.result.records[?(@.object_id==0)].id; 写法?(@.object_id==0)为固定写法,常用于列表内元素的筛选,如果值为字符串,则记得加双引号; 6、获取前N个值(切片) 还是以上面那个json字符串作为例子,如果要获取records下的前两个元素的id值,则使用语法$.result.records[:2].id $.result.records[2].id 是排除前两条数据; $.result.records[-2].id 是排除后两条数据; 7、获取固定条件下的多个key的value值 语法$.result.records[?(@.object_id==0)].["id","name","is_active"]
json提取器
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)