JSONPath解析json
2024-10-07 09:34:38
JSONPath - 用于JSON的XPath
- 用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具。
考虑到接下来计划开发一个自动化测试平台,在接口测试中会设置多个检查点,这时想到使用JSONPath来做检查点的校验。
import com.alibaba.fastjson.JSONPath;
import java.util.HashMap;
import java.util.Map; public class JSONPathDemo { public static void main(String[] args) { String json = "{\"store\":{\"book\":[{\"title\":\"高效Java\",\"price\":10.2},{\"title\":\"设计模式\",\"price\":12.21},{\"title\":\"重构\",\"isbn\":\"553\",\"price\":8},{\"title\":\"虚拟机\",\"isbn\":\"395\",\"price\":22}],\"bicycle\":{\"color\":\"red\",\"price\":19}}}";
//String expression1 = (String) JSONPath.read(json,"$.store.book[0].title");
//int expression2 = (int) JSONPath.read(json,"$.store.book[0].price"); // 设置的检查点,多个检查点用;分隔
String params = "$.store.book[0].price=10.2;$.store.book[1].title=设计模式";
String[] data = params.split(";");
// 定义测试结果的标记
Boolean flag = false; //遍历数组,获取每一个检查点在json中对应的数据,存在map中
Map<String, Object> map = new HashMap<>();
for (int i = 0; i < data.length; i++) {
map.put(data[i].split("=")[0], data[i].split("=")[1]);
System.out.println("检查点"+ (i+1) +"返回的数据:" + JSONPath.read(json, data[i].split("=")[0]));
System.out.println("检查点"+ (i+1) +"断言的数据:" + map.get(data[i].split("=")[0])); //判断检查点数据与返回的json数据是否一致
if (JSONPath.read(json, data[i].split("=")[0]) instanceof String) {
if (JSONPath.read(json, data[i].split("=")[0]).equals(map.get(data[i].split("=")[0]))) {
//System.out.println("Pass A");
flag = true;
} else {
//System.out.println("Fail A");
flag = false;
break;
}
} else { // Object转String
if ((JSONPath.read(json, data[i].split("=")[0]).toString()).equals((map.get(data[i].split("=")[0])))) {
//System.out.println("Pass B");
flag = true;
} else {
//System.out.println("Fail B");
flag = false;
break;
}
}
}
if (flag) {
System.out.println("【测试执行结果:通过】");
} else {
System.out.println("【测试执行结果:失败】");
}
}
}
最新文章
- 纪念BLives 1.0版本发布
- MVC学习系列6--使用Ajax加载分部视图和Json格式的数据
- 回调函数透彻理解Java
- Atitit.java expression fsm 表达式词法分析引擎 v2 qaa.docx
- js获取某个ID的class名称
- cocos2dx游戏开发——捕鱼达人mini版学习笔记(一)——FishAchor的搭建
- powershell 参数 [String]Service
- user-agent查询
- python之list
- linux qcom LCD framwork
- shell脚本示例:计算毫秒级、微秒级时间差
- A1129. Recommendation System
- centos中PATH环境变量查看和修改
- TabControl TabPage添加关闭按钮
- Flex 界面初始化 自定义 预加载 类!
- Java中带标签的break,continue
- 3、在Shell程序中使用的参数
- C++类继承--构造函数时先构造基类
- Apache 工作模式详解
- Java设计模式—责任链模式
热门文章
- nginx配置反向代理,解决前端开发的跨域问题
- Spring基础09——Bean的自动装配
- 安信可ESP-12F(8266)模块烧录问题解决:示 :ESP8266 Chip stub error esp_stub_an
- Linux架构之Nginx 常见问题
- UVa10426
- Manacher || Luogu P3805【模板】manacher算法
- :last-child----represents the last element among a group of sibling elements.
- CF1242B. 0-1 MST
- linux运维、架构之路-MySQL备份与恢复(四)
- Codeforces 980D