Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのJsonGeneratorを使ってJSONを生成する方法【コード例付きで解説】

はじめに

JavaでJSONデータをプログラム的に作成したい場合、Jacksonライブラリが提供するJsonGeneratorクラスが非常に便利です。本記事では、JsonGeneratorの基本的な役割と、実際のコード例を使ったJSON生成の手順をわかりやすく解説します。

JsonGeneratorとは

JsonGeneratorは、JSONコンテンツを書き出すための公開APIを定義した基底クラスです。このクラスのインスタンスは、JsonFactoryオブジェクトのファクトリメソッドを通じて生成されます。

JsonFactoryからJsonGeneratorを取得できたら、以下のようなメソッドを組み合わせてJSONを構築していきます。

  • writeStartObject(): JSONオブジェクトの開始マーカー({)を書き出す
  • writeFieldName(): フィールド名(キー)を書き出す
  • writeString(): 文字列値を出力する
  • writeStartArray(): 配列値の開始マーカー([)を書き出す
  • writeEndObject(): JSONオブジェクトの終了マーカー(})を書き出す

構文

public abstract class JsonGenerator extends Object implements Closeable, Flushable, Versioned

JsonGeneratorは抽象クラスとして定義されており、CloseableやFlushableなどのインターフェースを実装しているため、使用後は必ずclose()メソッドでリソースを解放することが推奨されています。

実装例

それでは、従業員情報を持つJSONを生成するサンプルコードを見てみましょう。

import java.io.*;
import com.fasterxml.jackson.core.*;

public class JsonGeneratorTest {
    public static void main(String args[]) throws IOException {
        // JsonFactoryのインスタンスを作成
        JsonFactory factory = new JsonFactory();
        StringWriter jsonObjectWriter = new StringWriter();

        // ファクトリからJsonGeneratorを取得
        JsonGenerator generator = factory.createGenerator(jsonObjectWriter);
        generator.useDefaultPrettyPrinter(); // 整形されたJSONを出力

        generator.writeStartObject();
        generator.writeFieldName("empid");
        generator.writeString("120");
        generator.writeFieldName("firstName");
        generator.writeString("Ravi");
        generator.writeFieldName("lastName");
        generator.writeString("Chandra");
        generator.writeFieldName("technologies");
        generator.writeStartArray();
        generator.writeString("SAP");
        generator.writeString("Java");
        generator.writeString("Selenium");
        generator.writeEndArray();
        generator.writeEndObject();
        generator.close(); // ジェネレーターを閉じる

        System.out.println(jsonObjectWriter.toString());
    }
}

コードのポイント

  • factory.createGenerator(jsonObjectWriter)により、StringWriterへ出力するJsonGeneratorを作成しています。
  • useDefaultPrettyPrinter()を呼び出すことで、インデント付きの見やすいJSONが出力されます。
  • 配列はwriteStartArray()writeEndArray()で囲むことで表現できます。
  • 処理が完了したらclose()を呼び出して、バッファのフラッシュとリソースの解放を行います。

実行結果

上記のコードを実行すると、以下のようなJSONが出力されます。

{
    "empid" : "120",
    "firstName" : "Ravi",
    "lastName" : "Chandra",
    "technologies" : [ "SAP", "Java", "Selenium" ]
}

まとめ

JsonGeneratorを使えば、ストリームベースで効率的にJSONを生成できます。オブジェクトや配列の開始・終了を明示的に制御できるため、大きなJSONデータを扱う場合にもメモリ消費を抑えられるのが特徴です。Jacksonライブラリを依存関係に追加すれば、すぐに試せるので、ぜひ実際のプロジェクトでも活用してみてください。

  1. JavaでJSON配列を作成する方法をわかりやすく解説

    JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x

  2. JavaでJSONファイルを作成する方法をわかりやすく解説

    JSON(JavaScript Object Notation)は、人間が読みやすい形式でデータを交換するために設計された、軽量なテキストベースのオープン標準フォーマットです。JSONの記法は、C、C++、Java、Python、Perlなど、多くのプログラミング言語に精通したプログラマーにとって馴染み深いものとなっています。 JSONドキュメントのサンプル 以下は、書籍情報を格納した典型的なJSONドキュメントの例です。 { book: [ { id: 01, language: Java, ed