我正在尝试比较两个JSON字符串是否相等。我发现此solution使用了Jackson,如下所示,但在我的所有项目中,我都使用GSON,因此我需要使用GSON做同样的事情。
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
}
有没有办法使用GSON比较两个JSON字符串是否相等?
根据this answer,您可以使用此:
JsonParser parser = new JsonParser();
JsonElement o1 = parser.parse("{a : {a : 2}, b : 2}");
JsonElement o2 = parser.parse("{b : 2, a : {a : 2}}");
assertEquals(o1, o2);
不幸的是,我猜这不像您希望的那么干净,但是应该可以。
在任何情况下,仔细查看该线程中的其他答案(尽管并非全部都使用GSON可能会有所帮助,因此,如果无法解决问题,也许其中一个可能会有用。)>
我不相信Gson库做出任何声明,即两个相等的JSON元素的JSON输出将是相同的,这主要是由于对象中属性的顺序,因为该标准不需要任何顺序。 Gson库本身不提供比较JSON元素或其序列化表示的功能。可以编写一个函数,该函数将比较两个JSON元素并适当地归入基础复合结构(即数组和对象)。