使用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模式的顺序发生变化,我的断言就会失败。
我尝试了将字符串转换成JSON的方法,但是没有找到任何方法。有人能帮我解决这个问题吗
您可以使用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));
如果有一个不确定的领域的顺序然后我建议你使用Hamcrest匹配器
你还没有发布回复,所以我只能给你举个例子
body(containsString("Hello World"));
或者你也可以试试下面的方法
body("find { it.userId == '123' }.subject", containsInAnyOrder("MATHS", "SCIENCE"))
我怎么能那么做?
在爪哇中。如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。 学生 1 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。学生 2 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。因此,要检查2名学生是否相等...我们比较每个字段。 但是,如果 Student 对象有许多字段,该怎么办?学生1对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部
问题内容: 我有这个间隔,当前每5秒执行一次ajax请求。我对声明有疑问。我的代码总是输入它,并且两个json值完全相同,为什么它认为它们不同? 编辑 这是控制台输出(虚线是分隔请求,它不在实际输出中) 问题答案: 不能保证以相同的方式序列化JSON对象,也不能保证属性以相同的顺序进行序列化,使用并不是测试对象相等性的好方法。 一个更好的例子是这样的函数(前一段时间在互联网上找到,希望我能感谢原始
问题内容: 是否有任何方法可以接收2个JSON对象并将其进行比较以查看是否有任何数据已更改? 编辑 在审查评论之后,需要进行一些澄清。 JSON对象定义为 “一组无序的名称/值对。一个对象以{(左括号)开始,以}(右括号)结束。每个名称后面都带有:(冒号),名称/值对之间以,(逗号)分隔。 ”。- json.org 我的目标是能够简单地比较2个JSON对象文字。 我不是javascript专家,所
创建一个名为“Circle”的Java类来实现Java。io。可串行化接口,并基于半径对圆进行建模。半径不能小于零。实现radius的getter和setter方法。还包括在circle类中重写toString。创建类的比较器,用于比较Circle类型的两个对象。 这就是我目前所拥有的 这是我的比较器类 我的问题是我做得对还是不对?
对于PostgreSQL(v9.5),JSONB格式提供了极好的机会。但现在我只能做一个相对简单的手术; 比较两个jsonb对象;查看一个文档与另一个文档相比有什么不同或缺失。 到目前为止我所拥有的 应该返回第1行与第2行的差异: 相反,它还返回重复项(