>我有一个本地json文件test.json
[
{
"id": 1,
"title": "test1"
},
{
"id": 2,
"title": "test2"
}
]
用于读取 json 文件的类
public static String getFileContent(String fileName){
String fileContent = "";
String filePath = "filePath";
try {
fileContent = new String(Files.readAllBytes(Paths.get(filePath)));
return fileContent;
}catch(Exception ex){
ex.printStackTrace();
}finally{
return fileContent;
}
}
我使用放心提出请求并获得相同的 json 响应
String fileContent= FileUtils.getFileContent("test.json");
when().
get("/testurl").
then().
body("", equalTo(fileContent));
这是我从本地文件中得到的
[rn {rn "id": 1,rn "title": "test1"rn },rn {rn "id": 2,rn "title": "test2"rn }rn]
这是实际响应:
[{id=1, title=test1}, {id=2, title=test2}]
有没有更好的方法来比较这两者?我尝试做类似fileContent.replaceAll("\r\n| |"", "");
的事情,但它只是删除了所有空间[{id:1,title:test1},{id:2,title:test2}]
有什么帮助吗?或者任何只比较内容而忽略换行符、空格和双引号的方法?
您可以使用以下任一方法
JsonPath :
String fileContent = FileUtils.getFileContent("test.json");
JsonPath expectedJson = new JsonPath(fileContent);
given().when().get("/testurl").then().body("", equalTo(expectedJson.getList("")));
杰克逊:
String fileContent = FileUtils.getFileContent("test.json");
String def = given().when().get("/testurl").then().extract().asString();
ObjectMapper mapper = new ObjectMapper();
JsonNode expected = mapper.readTree(fileContent);
JsonNode actual = mapper.readTree(def);
Assert.assertEquals(actual,expected);
GSON :
String fileContent = FileUtils.getFileContent("test.json");
String def = given().when().get("/testurl").then().extract().asString();
JsonParser parser = new JsonParser();
JsonElement expected = parser.parse(fileContent);
JsonElement actual = parser.parse(def);
Assert.assertEquals(actual,expected);