在我的android应用中,我必须合并从两个不同的api下载的两个不同的json结构,并进行改型。该json结构由不同的树json组成。
当前,我将这两个api的结果存储在两个不同的ObjectNode属性中,并存储在磁盘上的两个不同的文件中,我使用了两个objectNode,并将它们传递给此方法:
public JsonNode merge(JsonNode dst, JsonNode jsonToMerge) {
JsonNode node;
Iterator<String> fieldNames = dst.fieldNames();
while (fieldNames.hasNext()) {
String fieldName = fieldNames.next();
node = dst.get(fieldName);
if (jsonToMerge != null && jsonToMerge.has(fieldName)) {
Iterator<Map.Entry<String, JsonNode>> singleKey =
jsonToMerge.get(fieldName).fields();
while (singleKey.hasNext()) {
Map.Entry<String, JsonNode> entry =
singleKey.next();
if (node.isArray()) {
//noinspection ConstantConditions
((ArrayNode)
node).set(Integer.valueOf(entry.getKey()), entry.getValue());
} else {
//noinspection ConstantConditions
((ObjectNode) node).set(entry.getKey(),
entry.getValue());
}
}
}
}
if (jsonToMerge != null) {
fieldNames = jsonToMerge.fieldNames();
while (fieldNames.hasNext()) {
String fieldName = fieldNames.next();
JsonNode temp = jsonToMerge.get(fieldName);
if (!dst.has(fieldName)) {
((ObjectNode) dst).set(fieldName, temp);
}
}
}
return dst;
}
不幸的是,此过程大量使用ram,并且gc经常被触发。 如何优化此合并过程?你有建议吗?