import org.json.simple.JsonObject; //导入方法依赖的package包/类
@Override
public JSONObject apply(final JSONObject a, final JSONObject b) {
for (final Map.Entry entry : (Set) b.entrySet()) {
if (entry.getValue() instanceof JSONObject) {
if (a.containsKey(entry.getKey())) {
final Object object = a.get(entry.getKey());
if (object instanceof JSONArray) {
final JSONObject other = findById((JSONArray) object, ((JSONObject) entry.getValue()));
if (null == other)
((JSONArray) object).add(format((JSONObject) entry.getValue()));
else
apply(other, (JSONObject) entry.getValue());
} else {
final JSONArray array = new JSONArray();
array.add(object);
array.add(format((JSONObject) entry.getValue()));
a.put(entry.getKey(), array);
}
} else
a.put(entry.getKey(), format((JSONObject) entry.getValue()));
} else if (entry.getValue() instanceof List)
a.put(entry.getKey(),
((List) entry.getValue()).size() == 1 ?
((List) entry.getValue()).get(0) : entry.getValue());
else
a.put(entry.getKey(), entry.getValue());
}
return a;
}