我将尝试比较两个JSON文件,它们都有包含重复值的数组。
第一个JSON对象包含一个如下的数组:
"categories": [
"May",
"Apr",
"Mar"
]
我的第二个JSON对象有一个如下的数组:
"categories": [
"May",
"May",
"Apr",
"Apr",
"Mar",
"Mar"
]
我正在使用可以在此链接中找到的平面图来比较JSON:使用guava比较JSON 这是我的一部分代码:
private String smartJSONsCompare(JSONObject leftJson, JSONObject rightJson) {
String result = "</br>";
Gson gson = new Gson();
Type type = new TypeToken<Map<String, Object>>(){}.getType();
Map<String, Object> leftMap = gson.fromJson(leftJson.toString(), type);
Map<String, Object> rightMap = gson.fromJson(rightJson.toString(), type);
Map<String, Object> leftFlatMap = FlatMapUtil.flatten(leftMap);
Map<String, Object> rightFlatMap = FlatMapUtil.flatten(rightMap);
MapDifference<String, Object> difference = Maps.difference(leftFlatMap, rightFlatMap);
StringBuilder SB = new StringBuilder("</br>");
SB.append("Entries only on LEFT: </br>");
difference.entriesOnlyOnLeft().forEach((key, value) -> SB.append(key + ": " + value + "</br>"));
SB.append("Entries only on RIGHT: </br>");
difference.entriesOnlyOnRight().forEach((key, value) -> SB.append(key + ": " + value + "</br>"));
SB.append("Entries full difference : </br>");
difference.entriesDiffering().forEach((key, value) -> SB.append(key + ": " + value + "</br>"));
result = SB.toString();
return result;
}
我希望你能更加智能地呈现它们的区别,换句话说:展示所有在比较的 JSON 中不匹配的对象/数组。缺失了什么或者添加了什么。
对于“categories”数组,我的代码返回一个不匹配的信息,但是没有以优雅的方式说明差异。
我该怎么做?