有2个json,两个json都需要应用多个路径。然后,应通过测试中的一些断言来比较这些json。 ide解决方案应该是:
Stirng actualJson - ....
Stirng expectedJson - ....
Stirng actualJsonFiltered - filter(actualJson, lisofJsonPath);
Stirng expectedJsonFiltered - filter(expectedJson, lisofJsonPath);
JSONAssert.assertEquals(actualJsonFiltered, expectedJsonFiltered);
什么是不是解决方案: 1.任何类似的代码:
for(String p: lisofJsonPath) {
assertEquals(JsonPath.read(actualJson, p), JsonPath.read(expectedJson , p);
}
需要过滤json并使用所有现有路径显示/失败。显示错误,指出多个路径不匹配。 不是一对一的json路径匹配。
org.assertj.core.api.SoftAssertions
-也不是解决方案,因为很难从消息中了解哪些资产失败。
harcrest allOf
/ anyOf
也不是解决方案,因为它在第一次匹配的评估中失败,没有将它们组合在一起。
PS 。关于json diff可视化的任何建议都是很好的。理想的方式看起来像this。 (但这是在javascript中)
答案 0 :(得分:0)
首先, 接受以下内容:
我将JSON的排序形式称为“规范JSON形式”。
一旦您接受以上内容为真实和/或真实, 这将成为您解决问题的方法:
assertEquals
比较规范的JSON形式。