首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用GSON获取两个json对象之间的差异?

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

Stack Overflow用户
提问于 2015-09-01 11:52:25
回答 2查看 30K关注 0票数 9

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

代码语言:javascript
复制
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);

有没有办法让两个人差异在两个对象之间使用JSON格式的Gson?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-01 12:27:00

如果将对象反序列化为Map,您可以使用芭乐此外,您还可以使用Maps.difference来比较两个结果映射。

请注意,如果您关心订单在这些元素中,Json的字段上不保持顺序Objects,所以这个方法不会显示这些比较。

下面是你做这件事的方法:

代码语言:javascript
复制
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>(){}.getType();
  Map firstMap = g.fromJson(json1, mapType);
  Map secondMap = g.fromJson(json2, mapType);
  System.out.println(Maps.difference(firstMap, secondMap));
}

此程序输出:

代码语言:javascript
复制
not equal: only on left={state=CA}: only on right={street=123 anyplace}

在这里阅读更多关于结果的信息MapDifference对象包含。

票数 21
EN

Stack Overflow用户

回答已采纳

发布于 2015-09-01 12:27:00

RFC6902符合标准的库链接,用于查找两个JsonObject对象之间的差异。

https://mvnrepository.com/artifact/com.tananaev/json-patch

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32323256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档