JavaのJSONStringerとは?使うべき場面と実装例を徹底解説
JSONStringerは、JSONテキストを生成するための便利なクラスで、出力がJSON構文ルールに厳密に従うことを保証してくれます。各JSONStringerインスタンスが生成できるのは1つのJSONテキストだけです。インスタンスには、テキストへ値を追加するvalue()メソッドと、オブジェクト内で値の直前にキーを追加するkey()メソッドが用意されています。さらに、配列値の作成と範囲の指定を行うarray()およびendArray()メソッド、オブジェクト値の作成と範囲の指定を行うobject()およびendObject()メソッドも提供されています。
JSONStringerの主な特徴
- 構文エラーのない正しいJSON文字列を自動的に生成できる
- 手動の文字列連結で起こりがちなカンマや括弧の付け忘れを防げる
- メソッドチェーンにより、JSONの階層構造がそのままコードに反映され可読性が高い
- org.jsonパッケージに含まれており、依存関係を追加すればすぐに利用できる
使用例1:シンプルなJSONオブジェクトの生成
まずは、key()メソッドとvalue()メソッドを組み合わせて、基本的なJSONオブジェクトを生成する例を見てみましょう。
import org.json.*;
public class JSONStringerTest1 {
public static void main(String[] args) throws JSONException {
JSONStringer stringer = new JSONStringer();
String jsonStr = stringer
.object() // JSONオブジェクトの開始
.key("Name")
.value("Raja")
.key("Age") // キーと値のペアを追加
.value("25")
.key("City")
.value("Hyderabad")
.endObject() // JSONオブジェクトの終了
.toString();
System.out.println(jsonStr);
}
}実行結果
{"Name":"Raja","Age":"25","City":"Hyderabad"}使用例2:ネストしたJSON配列とオブジェクトの生成
次に、array()メソッドとobject()メソッドを組み合わせて、複数のオブジェクトを含むJSON配列を生成する例です。
import org.json.*;
public class JSONStringerTest2 {
public static void main(String[] args) throws JSONException {
JSONStringer stringer = new JSONStringer();
String jsonStr = stringer
.array() // JSON配列の開始
.object() // JSONオブジェクトの開始
.key("Name").value("Adithya")
.key("Age").value("25") // キーと値のペアを追加
.key("Mobile").value("9959984000")
.endObject() // JSONオブジェクトの終了
.object()
.key("Address").value("Madhapur")
.key("City").value("Hyderabad")
.endObject()
.endArray() // JSON配列の終了
.toString();
System.out.println(jsonStr);
}
}実行結果
[{"Name":"Adithya","Age":"25","Mobile":"9959984000"},{"Address":"Madhapur","City":"Hyderabad"}]JSONStringerを使うべき場面
JSONStringerが特に役立つのは、以下のようなケースです。
- 動的にJSONを組み立てたい場合:条件分岐やループ処理の中でJSONを少しずつ構築する際、カンマや波括弧の管理を意識せずに済みます。
- 構文ミスを防ぎたい場合:文字列を手作業で連結すると、引用符の抜けやカンマの過不足などのミスが発生しやすくなりますが、JSONStringerなら構文ルールが自動的に守られます。
- 可読性の高いコードを書きたい場合:メソッドチェーンによって、JSONの階層構造がそのままコードの構造として表現されます。
なお、単純にMapやListからJSONへ変換したいだけであれば、JSONObjectやJSONArrayの方が手軽な場合もあります。JSONStringerは「細かく制御しながら正確なJSONを組み立てたい」という場面でこそ真価を発揮する、最適な選択肢と言えるでしょう。
-
Javaのpack()メソッドとは?使い方とsetSize()との違いを解説
pack()メソッドは、JavaのWindowクラスで定義されているメソッドで、フレーム内のすべてのコンポーネントがそれぞれの推奨サイズ(preferred size)以上で表示されるように、ウィンドウのサイズを自動的に調整します。 代替手段として、setSize()メソッドやsetBounds()メソッドを呼び出して、フレームのサイズを明示的に指定する方法もあります。しかし一般的には、pack()メソッドを使用する方がsetSize()よりも推奨されています。その理由は、pack()がフレームのサイズ決定をレイアウトマネージャーに委ねることができ、レイアウトマネージャーはプラットフォーム間の
-
JavaオブジェクトをJSONに変換する方法(Jackson・Gsonの使い方)
このチュートリアルでは、JavaオブジェクトをJSON形式に変換する方法を、定番ライブラリであるJacksonとGsonの2つを使って解説します。 サンプルとして使用するのは、ごく標準的なPOJO(Plain Old Java Object)であるPersonクラスです。Personオブジェクトを作成したら、それぞれのライブラリを使ってJSONへ変換してみましょう。 Person.java import java.util.List; import java.util.Map; public class Person { String name; Integer age;