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ライブラリを依存関係に追加すれば、すぐに試せるので、ぜひ実際のプロジェクトでも活用してみてください。
-
JavaでJSON配列を作成する方法をわかりやすく解説
JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x
-
JavaでJSONファイルを作成する方法をわかりやすく解説
JSON(JavaScript Object Notation)は、人間が読みやすい形式でデータを交換するために設計された、軽量なテキストベースのオープン標準フォーマットです。JSONの記法は、C、C++、Java、Python、Perlなど、多くのプログラミング言語に精通したプログラマーにとって馴染み深いものとなっています。 JSONドキュメントのサンプル 以下は、書籍情報を格納した典型的なJSONドキュメントの例です。 { book: [ { id: 01, language: Java, ed