JSON匹配

发布时间 2024-01-09 11:49:11作者: SophiaChen
JsonPath:
基础描述符描述
$ 查询的根节点对象,用于表示一个json数据,可以是数组或对象
. 获取子节点
@ 过滤器断言处理的当前节点对象
* 获取所有节点
.. 递归搜索,筛选所有符合条件的节点
?() 过滤器表达式,筛选操作
[start:end] 数组片段,区间为[start,end),不包含end
[A]或[A,B] 迭代器下标,表示一个或多个数组下标
BODY
"{...}":
"data":{
  "city": "杭州",
  "code":200,
  "msg":"成功!",
  "co":null,
  "aqi":"66"
  "forecast": [{
      "position_name": "滨江",
      "aqi": 62,
      "level": "良",
      "primary_pollutant": "null",
      "pm25": "43",
      "pm10": "73",
      "type":"阴"
    }, {
      "position_name": "西溪",
      "aqi": 68,
      "level": "优",
      "primary_pollutant": "null",
      "pm25": "44",
      "pm10": "73"
      "type":"阴"
    },
    ....
  ]
}

表示支持JsonPath语法定义判断校验返回值是否符合预期值,示例如下:

表达式含义获取值
$.data.forecast[0].position_name 获取data.forecast[0]对象中position_name值。 滨江
$.data.forecast[*].aqi 使用迭代器,获取data中forecast数组中所有aqi的值。 [62,68]
$..forecast[?(@.aqi >= 60)].primary_pollutant 使用迭代器,获取forecast数组中所有的aqi值大于等于60的primary_pollutant值。 ['null','null']
{$.data.forecast[*].aqi}[0] 使用迭代器,获取data中forecast数组中aqi的第一个值。 62
$.data.forecast[?(@.level=="良")].pm25 获取data中forecast数组中level等于"良"对象,并获取该对象中pm25的值。 [43]
$.data.forecast[?((@.level=="良")&&(@.aqi==62))].pm10 获取data中forecast数组中level等于“良”与等于aqi等于63的所有对象,并获取该对象中pm10的值。 [73]
$.data.forecast[?(@.aqi>65)].position_name 获取data中forecast数组中aqi大于65的所有对象,并获取该对象中position_name值。 ["西溪"]
$.stock_list[?(@.gat_stock_code=="00700")].book_qty