我正在研究一个用例,我需要解析不同的JSON字符串,并根据JSON的“类型”查询特定字段。 “type”是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
。但是,我只有很少的字段,我真的很在乎剩下的字段是不需要的。
答案 0 :(得分:0)
看看JsonPath。它提供类似xpath的丰富查询语言,允许从JSON树中搜索和检索单个或少数元素。
答案 1 :(得分:0)
考虑使用Jackson Streaming API -
https://github.com/FasterXML/jackson-docs/wiki/JacksonStreamingApi