• 表达式:$.data.forecast[*].type 或 $.data..type
  • 表示获取的是data下forecast数组中所有的type字段值。获取值为:["多云","中到大雨","多云","小雨","多云"]

  • 表达式:$.data.forecast.length()
  • 表示获取的是data下forecast数组长度。获取值为:5

  • 表达式:$.data.forecast[?(@.type == "小雨")].date
  • 表示获取的是data下forecast数组中天气类型为“小雨”的日期。获取值为:["17日星期五"]

  • 表达式:$.data.forecast[?(@.type =~ /^小雨.*/)].date
  • 表示以正则表达式过滤获取的是data下forecast数组中有“小雨”的日期。获取值为:["15日星期三"]

  • 表达式:$.data.forecast[?((@.high <= "30")&&(@.high >= "15"))].date
  • 表示获取的是data下forecast数组中高温温度在25℃~30℃之间的日期。获取值为:["16日星期四","17日星期五"]

  • 表达式:$.data.forecast[?((@.type == "小雨")||(@.type == "中到大雨"))].date 或 $.data.forecast[?(@.type in ["小雨","中到大雨"])].date
  • 表示获取的是data下forecast数组中天气类型为“小雨”或“中到大雨”的日期。获取值为:["15日星期三","17日星期五"]

    特殊用法:

    1、校验返回体中某一个字段是否包含某一个值或多个值或某些内容,校验包含多个值以&&符号连接。例如type值中是否包含“多云”。

    表达式:$.data.forecast[*].type 获取值为:["多云","中到大雨","多云","小雨","多云"]

    用法:校验类型:Json匹配 参数:$.data.forecast[*].type 值:多云

    描述:此块逻辑平台做了兼容处理,若值列填写的值包含于表达式获取的数组列表中,则校验通过。

    2、在用例中校验或场景中表达式过滤输出获取到的值中某一个,例如type值中第一个值。

    表达式:$.data.forecast[*].type 获取值为:["多云","中到大雨","多云","小雨","多云"]

    取获取值中第一个值“多云”:{$.data.forecast[*].type}[0],依次类推。

    3、若校验的返回体中参数key中含有 . () *等关键字时(与平台校验逻辑中关键字冲突,导致校验不通过)可以使用以下方法:

    "data" : [ "count(*)" : 123 , "left(send_address,2)" : 456

    表达式:$.["data"][0]["count(*)"] 获取值为:123

    表达式:{$.["data"][0]}['left(send_address,2)'] 获取值为:456

    4、若校验返回体中某一个数组中参数包含或不包含某一个参数时,例如校验不包含avgUv7D

    "supplierId" : 523 , "goodsId" : 55280465 , "onlineStatus" : 1 , "title" : "多颜色商品-auto-20161121154939513" , "importType" : 1 ,

    表达式:{$.[?(@.goodsId == 55280465)]}.contains('avgUv7D') 获取值为Flase

    表达式:$.[?(@.goodsId == 55280465)].[?(@.avgUv7D)] 获取值为[]

    可以使用[[[[ http://jsonpath.herokuapp.com/?path=$.store.book\[\]\(http://jsonpath.herokuapp.com/?path=$.store.book\[\)\](http://jsonpath.herokuapp.com/?path=$.store.book[]%28http://jsonpath.herokuapp.com/?path=$.store.book[%29\)\ ] 来验证你的表达式哦~

    2019-07-23 20:40:34