How to compare two JSON Strings for equality using GSON?
我正在尝试比较两个JSON字符串是否相等。我找到了使用杰克逊的解决方案,如下所示,但是在我的所有项目中,我都使用GSON,所以我需要使用GSON做同样的事情。
1 2 3 4 5 6 7 8 | 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字符串是否相等?
根据此答案,您可以使用此:
1 2 3 4 | 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元素进行比较并适当地归入基础复合结构(即数组和对象)的函数。
我在这里找到了似乎包含有效比较功能的文章。