首页  >  文章  >  Java  >  Java 中的大型 JSON 文件处理

Java 中的大型 JSON 文件处理

Barbara Streisand
Barbara Streisand原创
2024-10-21 16:11:29849浏览

Large JSON file processing in Java

高效的 JSON 文件处理在现代应用程序中非常重要。如果 JSON 文件很大,我们需要妥善处理,以避免堆内存不足错误和大量资源消耗。

GSON 是 Java 中处理 JSON 文件的最佳库之一。

  • 它提供线程安全实例来重用同一对象来处理多个请求。

  • 除非有特殊情况,否则它不期望任何注释可用于序列化和反序列化。

  • 提供 toJson() 和 fromJson() 方法用于序列化和反序列化。

  • 它提供使用流阅读器读取内容的支持。

下面是使用 java 流读取器读取文件并转换为 Java 对象的代码片段。我正在对每 100 条记录应用我的业务逻辑。

假设 JSON 文件具有如下所示的数据数组。

[
{
“id”:1,
“名字”:“艾米丽”,
“姓氏”:“约翰逊”
}
]

Java 代码

private Optional<Boolean> readFile(String path) {
    try (InputStream inputStream = Files.newInputStream(Path.of(path));
         JsonReader reader = new JsonReader(new InputStreamReader(inputStream))) {
        Instant start = Instant.now();
        reader.beginArray();
        List<User> users = new ArrayList<>();
        while (reader.hasNext()) {
            users.add(gson.fromJson(reader, User.class));
            if (users.size() >= 100) {
                //Initiate your records processing
                //You can consider processing it async way handling failure scenarios properly
                users.clear();
            }
        }
        reader.endArray();
        LOGGER.info("Total time taken to process file:{}, Duration:{} (millis)", path, Duration.between(start, Instant.now()).toMillis());
    } catch (Exception e) {
        LOGGER.error("", e);
        return Optional.of(false);
    }
    return Optional.of(true);
}

以上是Java 中的大型 JSON 文件处理的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn