一、在接口自动化平台或框架中,对接口返回的结果,我们一般要取出相应的字段,跟我们的预期结果进行比较,如果一致就通过,不一致就失败了,最简单的就是检验下接口返回的success字段是否为true。一般接口返回的数据类型基本都是json,下面来详细介绍下如果使用JsonPath对json结果解析。
1、首先了解下什么是JsonPath,可以参考这篇文章,写的还是比较简单明了的,简单来说JsonPath就是Json版的XPath,我们可以根据jsonPath来找到json中想要的内容。JsonPath完全介绍及详细使用教程_Sunny蔬菜小柠的博客-CSDN博客_jsonpath
2、我们要掌握的是JsonPath的表达式,上面的博客中也有详细介绍,掌握后可以使用在线工具自己再学习一下就比较熟练了。
Jayway JsonPath evaluator
二、下面介绍使用具体使用jsonPath解析json的方法。
1、首先要下载jsonPath的jar包,如果是mvn项目的话,直接在pom中添加下面的依赖:
com.jayway.jsonpath json-path
2、具体的方法,直接附上代码吧,最后取出来的是个String,这里默认返回的是List的第一个元素,如果想返回指定的位置,可以再加个参数。
public static String readValUsingJsonPath(String json, String path) {
List res = readUsingJsonPath(json,path);
return res==null||res.isEmpty()?"":res.get(0);
}
private static List readUsingJsonPath(String json, String path) {
if (json == null) {
TestLog.error("当前Json对象为空,无法解析指定元素.");
return null;
}
if (path == null) {
TestLog.error("当前path对象为空,无法解析指定元素,请调整为正确的path.");
return null;
}
try {
List resJsonList = new ArrayList<>();
if (path.equals(".")) {
resJsonList.add(json);
return resJsonList;
}
//1. 解析Json结果为一个对象
ReadContext context = JsonPath.parse(json);
Object jsonRes = context.read("$." + path);
//2.对当前的对象进行判断,如果是一个List,把其分解开来,并再次进行解析,直到最后都是单个String对象,再放到List中
Queue
3、取到了接口返回的实际值,再跟我们的预期结果进行断言一下就好了。



