Ali*_*Ali 5 java android json gson
我使用此代码在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);
Run Code Online (Sandbox Code Playgroud)
有两种方法可以使用GSON格式的Gson 获取两个对象之间的差异吗?
dur*_*597 14
如果将对象反序列化为a 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));
}
Run Code Online (Sandbox Code Playgroud)
该计划输出:
not equal: only on left={state=CA}: only on right={street=123 anyplace}
Run Code Online (Sandbox Code Playgroud)
在此处阅读更多有关结果MapDifference对象包含的信息的信息.
| 归档时间: |
|
| 查看次数: |
16982 次 |
| 最近记录: |