標簽:正則表達式 如何 返回 mamicode src 簡單 默認值 var 情況
用法說明
此提取器用于提取请求返回结果中的某个值或者某一组值,用法比正則表達式要簡單,标准写法为$.key,其中key爲返回結果map中的一個鍵,如果是多層則繼續用.key進行即可,如果遇到key的value值爲一個List,則使用.key[n],其中n爲list中元素的編號,如下使用實例來說明下如何使用;
如上示例为单元素获取方法,如果要获取多個元素,則參數名稱寫多個,用逗號分開;
而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"]
原文地址:http://www.51testing.com/html/18/n-4461218.html
json提取器
標簽:正則表達式 如何 返回 mamicode src 簡單 默認值 var 情況
原文地址:https://www.cnblogs.com/mmjiang/p/14938671.html