如何使用GSON比较两个JSON字符串是否相等?

问题描述 投票:5回答:2

我正在尝试比较两个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字符串是否相等?

java json gson equality
2个回答
10
投票

根据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可能会有所帮助,因此,如果无法解决问题,也许其中一个可能会有用。)>


0
投票

我不相信Gson库做出任何声明,即两个相等的JSON元素的JSON输出将是相同的,这主要是由于对象中属性的顺序,因为该标准不需要任何顺序。 Gson库本身不提供比较JSON元素或其序列化表示的功能。可以编写一个函数,该函数将比较两个JSON元素并适当地归入基础复合结构(即数组和对象)。

© www.soinside.com 2019 - 2024. All rights reserved.