一. jsonpath语法
1. 操作符
2. 函数
可以在JsonPath表达式执行后进行调用,其输入值为表达式的结果。
3. 过滤器
过滤器是用于过滤数组的逻辑表达式。
二.实例说明
1. 常用示例
BODY
{
"code" : 200,
"msg" : "成功!",
"data" : {
"yesterday" : {
"date" : "13日星期一",
"high" : "高温 23℃",
"fx" : "东北风",
"low" : "低温 18℃",
"fl" : "<![CDATA[3-4级]]>",
"type" : "小雨"
},
"city" : "杭州",
"aqi" : null,
"forecast" : [
{
"date" : "17日星期五",
"high" : "30",
"fengli" : "<![CDATA[<3级]]>",
"low" : "22",
"fengxiang" : "无持续风向",
"type" : "小雨"
},
{
"date" : "18日星期六",
"high" : "33",
"fengli" : "<![CDATA[<3级]]>",
"low" : "19,
"fengxiang" : "无持续风向",
"type" : "多云"
}
],
"ganmao" : "各项气象条件适宜,无明显降温过程,发生感冒机率较低。",
"wendu" : "21"
}
}
2. 实际中的应用场景示例
- 获取数组对象中的某个值
表达式:$.data.forecast[*].type 获取值为:["多云","中到大雨","多云","小雨","多云"]
- 获取数组中某个位置的值
表达式:$.data.forecast[*].type 获取值为:["多云","中到大雨","多云","小雨","多云"]
取获取值中第一个值“多云”:{$.data.forecast[*].type}[0],依次类推。
- key中含有特殊值
{
"data" : [
{
"count(*)" : 123,
"left(send_address,2)":456
}
]
}
表达式:$.["data"][0]["count(*)"] 获取值为:123
表达式:{$.["data"][0]}['left(send_address,2)'] 获取值为:456
- 判断不包含
[
{
"supplierId":523,
"goodsId":55280465,
"onlineStatus":1,
"title":"多颜色商品-auto-20161121154939513",
"importType":1,
}
]
表达式:{$.[?(@.goodsId == 55280465)]}.containsKey('avgUv7D') 获取值为false
或
表达式:!{$.[?(@.goodsId == 55280465)]}.containsKey('avgUv7D') 获取值为true
或
表达式:$.[?(@.goodsId == 55280465)].[?(@.avgUv7D)] 获取值为[]