使用Jackson API查询JSON字符串,性能良好

时间:2018-02-22 15:31:43

标签: java json jackson

我正在研究一个用例,我需要解析不同的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。但是,我只有很少的字段,我真的很在乎剩下的字段是不需要的。

2 个答案:

答案 0 :(得分:0)

看看JsonPath。它提供类似xpath的丰富查询语言,允许从JSON树中搜索和检索单个或少数元素。

答案 1 :(得分:0)