advanced-json-path
var JsonPath = require("advanced-json-path");
let data = {
header: {
"assetNo": "09020000000176",
"equipType": "",
"optCmd": "park_data_9011",
"requestTime": 1513763583639,
"responseTime": 1513763583639,
"dataSource": "0",
"code": 300,
"msg": "数据取得成功。"
},
status: "300",
statusType: "002",
time_status: 1513763583639,
code: 200
};
(1)直接取出对应字段的值
例1
let flag = JsonPath(data, '$.code');
Result:200
例2
let flag = JsonPath(data, '$.header.code');
Result:300
(2)根据条件取出对应字段的值
例1
let flag = JsonPath(data, '$.[?(@.status=="300")].code');
Result:200
let flag = JsonPath(data, '$.[?(@.status=="400")].code');
Result:false
例2
let flag = JsonPath(data, '$.header[?(@.optCmd=="park_data_9011")].code');
Result:300
(3)判断多个条件是否成功
例1 判断status= "300"并且statusType="002"
let flag = JsonPath(data, '$.[?(@.status=="300")][?(@.statusType == "002")]');
Result:{ header:
{ assetNo: '09020000000176',
equipType: '',
optCmd: 'park_data_9011',
requestTime: 1513763583639,
responseTime: 1513763583639,
dataSource: '0',
code: 300,
msg: '数据取得成功。' },
status: '300',
statusType: '002',
time_status: 1513763583639,
code: 200 }
针对数组
let data = {
header: {
"assetNo": "09020000000176",
"equipType": "",
"optCmd": "park_data_9011",
"requestTime": 1513763583639,
"responseTime": 1513763583639,
"dataSource": "0",
"code": 300,
"msg": "数据取得成功。"
},
status: "300",
statusType: "002",
time_status: 1513763583639,
code: 200,
"data": [
{
"code": 100,
"value": "100_value"
},
{
"code": 200,
"value": "200_value"
},
{
"code": 300,
"value": "300_value"
}
]
};
(1)
let flag = JsonPath(data, '$.data.[?(@.code=="100")].value');
Result : 100_value;
(2)
let flag = JsonPath(data, '$.data.[?(@.code=="200")].value');
Result : 200_value;
注意:$后面的data不能少,必须定位到数组里面,否则
let flag = JsonPath(data, '$.[?(@.code=="200")].value'),结果:false