我使用以下代码在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
则不会保留Object
s 字段的顺序,因此此方法不会显示这些比较。
这是您的操作方式:
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 字段的顺序,因此此方法不会显示这些比较。 这是您的操作方式: 该程序输出: 在此处阅读更多有关结果对象包含的信
问题内容: 我希望能够获得两个JavaScript对象图之间所有差异的列表,以及出现变化的属性名称和值。 就其价值而言,这些对象通常以JSON的形式从服务器中检索,并且通常不超过几层深度(即,可能是对象本身具有数据的数组,然后是具有其他数据对象的数组)。 我不仅要看到对基本属性的更改,还要看到数组成员等的数量差异等。 如果没有答案,我可能最终会自己写这个,但希望有人已经完成了这项工作或知道有人做了
问题内容: 我有两个这样的结果集: 我需要的最终结果是这些数组之间的差异–最终结果应如下所示: 是否可以在JavaScript中执行类似的操作? 问题答案: 仅使用本机JS,类似的方法将起作用:
如何获得两个数据帧之间的差异。例如,我有两个数据帧 我想收到
问题内容: 场景:我想要一个比较两个JSON对象并返回一个JSON对象的函数,其中包含差异列表,并在可能的情况下提供更多数据(例如覆盖率指标)。 如果我运行,返回的对象可能类似于: 或类似的东西,你就明白了。 有人知道解决方案吗?我已经找到了一个插件,但是我想知道是否还有其他选择。 问题答案: 可以使用通过对象键进行迭代的递归函数。然后使用Object.is测试和。然后测试如果第二对象是流延到该类
问题内容: ‘Go’的新手。问题可能是最基本的问题。 我有两个time.Time对象,我想获得小时/分钟/秒这两者之间的差异。可以说: 在上述情况下,由于差为0。应该给我00:00:00。考虑另一种情况: 在这种情况下,差异将为00:05:41。我看了看https://godoc.org/time,但什么都做不了。 问题答案: 您可以用来获取2个值之间的差,结果将是的值。 打印时,格式本身会“智能