advanced-json-path 基本使用
advanced-json-path
一、概述
JsonPath是xpath在json中的应用,是参照xpath表达式来解析xml文档的方式,用一个抽象的名字$来表示最外层的对象。
在线测试网站:http://jsonpath.com/
二、安装
npm install advanced-json-path
三、JSONPath语法元素
表达式语法 | 含义 | Meaning |
---|---|---|
$ | 根对象 | Root Object |
@ | 当前元素 | Current Object |
. | 子元素 | Child |
… | 递归下降 | Recursive children descent |
* | 通配符,表示所有的元素 | Any object/property |
[ ] | 子元素操作符 | index or quoted child name |
[start : end] | 数组分割操作 | slice operator |
( ) | 脚本表达式 | script expression |
?( ) | 应用过滤表示式 | filter expression |
四、操作示例
// 操作对象
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
};
-
直接取出对应字段的值
let flag = JsonPath(data, ‘$.code’); // 输出 200
let flag = JsonPath(data, ‘$.header.code’); // 输出 300
-
根据条件取出对应字段的值
let flag = JsonPath(data, ‘$.[?(@.status==“300”)].code’); // 输出 200
let flag = JsonPath(data, ‘$.[?(@.status==“400”)].code’); // 输出 false
let flag = JsonPath(data, ‘$.header[?(@.optCmd==“park_data_9011”)].code’); // 输出 300
-
判断多个条件是否成功
判断status= "300"并且statusType=“002”
let flag = JsonPath(data, ‘$.[?(@.status==“300”)][?(@.statusType == “002”)]’);
输出: {
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
}
参考地址:
https://www.npmjs.com/package/advanced-json-path
https://blog.csdn.net/weixin_37681471/article/details/79610998
https://blog.csdn.net/sD7O95O/article/details/126376756
原文地址:https://blog.csdn.net/qq_43157612/article/details/140543598
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!