首頁 >Java >java教程 >Java 中的大型 JSON 檔案處理

Java 中的大型 JSON 檔案處理

Barbara Streisand
Barbara Streisand原創
2024-10-21 16:11:29937瀏覽

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