如何使用GSON获得两个json对象之间的差异?

我使用以下代码在Android中使用Gson比较了两个JSON对象:

String json1 = "{\"name\": \"ABC\", \"city\": \"XYZ\"}";

String json2 = "{\"city\": \"XYZ\", \"name\": \"ABC\"}";

JsonParser parser = new JsonParser();

JsonElement t1 = parser.parse(json1);

JsonElement t2 = parser.parse(json2);

boolean match = t2.equals(t1);

有两种方法可以使用Gson以JSON格式获取两个对象之间的 差异 吗?

回答:

如果将对象反序列化为Map<String,

Object>,也可以使用Guava,则可以Maps.difference用来比较两个生成的地图。

请注意,如果您关心元素的 顺序Json则不会保留Objects 字段的顺序,因此此方法不会显示这些比较。

这是您的操作方式:

public static void main(String[] args) {

String json1 = "{\"name\":\"ABC\", \"city\":\"XYZ\", \"state\":\"CA\"}";

String json2 = "{\"city\":\"XYZ\", \"street\":\"123 anyplace\", \"name\":\"ABC\"}";

Gson g = new Gson();

Type mapType = new TypeToken<Map<String, Object>>(){}.getType();

Map<String, Object> firstMap = g.fromJson(json1, mapType);

Map<String, Object> secondMap = g.fromJson(json2, mapType);

System.out.println(Maps.difference(firstMap, secondMap));

}

该程序输出:

not equal: only on left={state=CA}: only on right={street=123 anyplace}

在此处阅读更多有关结果MapDifference对象包含哪些信息的信息。

以上是 如何使用GSON获得两个json对象之间的差异? 的全部内容, 来源链接: utcz.com/qa/398455.html

回到顶部