【发布时间】:2018-02-22 15:31:42
【问题描述】:
我正在研究一个用例,我需要解析不同的 JSON 字符串并根据 JSON 的“类型”查询特定字段。 “类型”是 JSON 字符串中的一个字段。
在浏览完博客和基准测试后,我正在使用 Jackson API 来执行此任务,因为它是最快的。
我能够解析 JSON 并实现我想要的,但问题在于性能。
public String generate(String inputJson, List<String> idParams,final String seperator) throws Exception {
JsonNode node;
StringBuilder sb = new StringBuilder();
try {
node = new ObjectMapper().readTree(new StringReader(inputJson));
idParams.forEach(e -> {
String value = node.findValue(e).asText();
sb.append(value).append(seperator);
});
} catch (Exception e) {
throw e;
}
return sb.toString();
}
在上述方法中,我将字段详细信息作为List 获取。在forEach(), 的帮助下,我能够通过使用字段查找来获取值。
罪魁祸首是列表迭代器,因为我必须搜索整个 json 树才能找到每个元素的值。有没有更好的优化方法。我还想获取其他 JSON 解析库的输入,这可以提高这里的性能。
我也在考虑一次性解析整个 json 并将键和值写入HashMap。但是,我真正关心的字段很少,其余字段都不需要。
【问题讨论】: