当前位置: 首页 > 面试题库 >

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

靳富
2023-03-14
问题内容

我使用以下代码在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对象包含的信息的信息。



 类似资料:
  • 问题内容: 我使用以下代码在Android中使用Gson比较了两个JSON对象: 有两种方法可以使用Gson以JSON格式获取两个对象之间的 差异 吗? 问题答案: 如果将对象反序列化为,也可以使用Guava,则可以用来比较两个生成的地图。 请注意,如果您关心元素的 顺序 ,则不会保留s 字段的顺序,因此此方法不会显示这些比较。 这是您的操作方式: 该程序输出: 在此处阅读更多有关结果对象包含哪些

  • 问题内容: 我有两个地图,如下所示: 我想获得与每个maps.ie不同的键 它显示了在sourceRecords中可用但在targetRecords中不可用的映射键。 它显示了targetRecords中可用的映射键,而sourceRecords中没有。 我做到了如下: 编辑 我能够找到通用键,但找不到不同的键。请帮忙。 问题答案: 集允许您也 删除 元素。 如果生成“ helper”集对您来说不

  • 问题内容: 我有两个字典。我需要找到两者之间的区别,这应该给我关键和价值。 我已经搜索并找到了一些插件/软件包,例如datadiff,dictdiff-master,但是当我在Python 2.7中尝试时,它说没有定义这样的模块。 我在这里用套装。 输出>>> set([[‘SCD-3547’,’SCD-3456’]) 我只有钥匙,我什至需要获取值。 问题答案: 使用字典理解来尝试以下代码段: 在

  • 我知道如何在不使用parsejson的情况下使用reverfit和迭代数组来获取对象,但我不能这样做,因为这部分是用reverfit和gson自动完成的。 我在这个问题上已经困了一段时间了,如果你能给我指点,我会非常感激的。 更新:

  • 问题内容: 我希望能够获得两个JavaScript对象图之间所有差异的列表,以及出现变化的属性名称和值。 就其价值而言,这些对象通常以JSON的形式从服务器中检索,并且通常不超过几层深度(即,可能是对象本身具有数据的数组,然后是具有其他数据对象的数组)。 我不仅要看到对基本属性的更改,还要看到数组成员等的数量差异等。 如果没有答案,我可能最终会自己写这个,但希望有人已经完成了这项工作或知道有人做了

  • 问题内容: 我有两个这样的结果集: 我需要的最终结果是这些数组之间的差异–最终结果应如下所示: 是否可以在JavaScript中执行类似的操作? 问题答案: 仅使用本机JS,类似的方法将起作用: