ホームページ  >  記事  >  Java  >  Java での大きな JSON ファイルの処理

Java での大きな JSON ファイルの処理

Barbara Streisand
Barbara Streisandオリジナル
2024-10-21 16:11:29931ブラウズ

Large JSON file processing in Java

最新のアプリケーションでは、効率的な JSON ファイル処理が重要です。 JSON ファイルのサイズが大きい場合は、メモリ不足エラーやリソースの大量消費を避けるために、適切に処理する必要があります。

GSON は、JSON ファイルを処理するために Java で利用できる最高のライブラリの 1 つです。

  • 同じオブジェクトを再利用して複数のリクエストを処理するためのスレッドセーフなインスタンスを提供します。

  • 特別な場合がない限り、シリアル化と逆シリアル化にアノテーションが使用できることは想定されていません。

  • シリアル化と逆シリアル化のための 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。