【问题标题】:Query JSON String using Jackson API with good performance使用性能良好的 Jackson API 查询 JSON 字符串
【发布时间】: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。但是,我真正关心的字段很少,其余字段都不需要。

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-09
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 2012-08-12
        • 2013-12-31
        • 1970-01-01
        相关资源
        最近更新 更多