Mar*_*ten 12
我有完全相同的问题,最后写了我自己的库:
https://github.com/algesten/jsondiff
它同时进行差异/修补.
Diffs是JSON对象本身,具有对象合并/替换和数组插入/替换的简单语法.
例:
original
{
a: { b: 42 }
}
patch
{
"~a" { c: 43 }
}
Run Code Online (Sandbox Code Playgroud)
该~指示对象合并.
result
{
a: { b: 42, c: 43 }
}
Run Code Online (Sandbox Code Playgroud)
Sta*_*Man 11
对于一个特定的建议,您可以使用Jackson,将JSON字符串绑定到JSON树中,并将它们进行相等性比较.就像是:
ObjectMapper mapper = new ObjectMapper();
JsonNode tree1 = mapper.readTree(jsonString1);
JsonNode tree2 = mapper.readTree(jsonString2);
if (tree1.equals(tree2)) {
// yes, contents are equal -- note, ordering of arrays matters, objects not
} else {
// not equal
}
Run Code Online (Sandbox Code Playgroud)
等价比较是按值进行的,并且应该按照JSON数组,对象和原始值的预期工作.
就我个人而言,我建议将 JSON 字符串反序列化回对象并比较对象。
这样,您就不必担心两个 JSON 字符串之间的额外空格/格式(两个字符串的格式可能截然不同,但仍然代表相同的对象)。