使用RestAssured,我正在尝试比较两个JSON对象。
示例: 第一个JSON来自excel,我将其读取为字符串并存储
String a = "Some JSON from Excel and I store it as a String";
第二个JSON是一个响应,它返回一个实际上是JSON的响应对象
Response expectedResponse = RestAssured.given().contentType("application/json").header(auth).get(endpoint).then().contentType("application/json").extract().response();
我想将这两个对象作为JSON对象进行比较,因为当我将响应转换为String并尝试进行比较时,如果JSON模式的顺序发生变化,我的断言就会失败。
我尝试了将String转换为JSON的方法,但找不到任何方法。有人可以帮我解决这个问题
答案 0 :(得分:0)
如果字段顺序不确定,则建议您使用Hamcrest Matchers
您尚未发布回复,因此我只能举个例子
body(containsString("Hello World"));
或者您也可以尝试以下类似的方法
body("find { it.userId == '123' }.subject", containsInAnyOrder("MATHS", "SCIENCE"))
答案 1 :(得分:0)
您可以使用objectMapper来实现所需的功能,如果对象中的属性顺序不同,它不会失败,请查看以下示例:
String s1 = "{ \"employee\": { \"id\": \"1212\", \"fullName\": \"John Miles\",
\"age\": 34 } }";
String s2 = "{ \"employee\": { \"id\": \"1212\", \"age\": 34, \"fullName\": \"John
Miles\" } }";
ObjectMapper mapper = new ObjectMapper();
JsonNode s1Json = mapper.readTree(s1);
JsonNode s2Json = mapper.readTree(s2);
System.out.println(s1Json.equals(s2Json));