JavaでGsonを使ってJSON文字列にプロパティを追加・挿入する方法
はじめに
com.google.gson.JsonElement クラスは、JSONを構成する1つの要素を表すクラスです。Gsonクラスが提供する toJsonTree() メソッドを使うと、オブジェクトをJsonElementのツリー構造としてシリアライズできます。このツリーに対して getAsJsonObject() メソッドを呼び出せば、要素を JsonObject として取得でき、そこへ自由にプロパティを追加・挿入することが可能です。
getAsJsonObject() メソッドの構文
public JsonObject getAsJsonObject()
このメソッドは、JsonElementをJsonObjectとして返します。戻り値のJsonObjectに対して addProperty() メソッドを呼び出すことで、キーと値のペアを簡単に追加できます。addProperty()はString型だけでなく、Number型やBoolean型なども値として受け付けます。
実装例
以下は、StudentオブジェクトをJSONに変換した後、「id」という追加のプロパティを挿入するサンプルコードです。
import com.google.gson.*;
public class AddPropertyGsonTest {
public static void main(String[] args) {
Gson gson = new GsonBuilder().setPrettyPrinting().create(); // 整形されたJSONを出力
Student student = new Student("Adithya");
String jsonStr = gson.toJson(student, Student.class);
System.out.println("JSON文字列: \n" + jsonStr);
JsonElement jsonElement = gson.toJsonTree(student);
jsonElement.getAsJsonObject().addProperty("id", "115");
jsonStr = gson.toJson(jsonElement);
System.out.println("追加のプロパティ挿入後のJSON文字列: \n" + jsonStr);
}
}
// Studentクラス
class Student {
private String name;
public Student(String name) {
this.name= name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}実行結果
JSON文字列:
{
"name": "Adithya"
}
追加のプロパティ挿入後のJSON文字列:
{
"name": "Adithya",
"id": "115"
}処理の流れのポイント
この手法のポイントは以下の3ステップです。
1. toJsonTree() でオブジェクトをJsonElementのツリーに変換する
2. getAsJsonObject() でJsonObjectを取得し、addProperty() で新しいプロパティを追加する
3. toJson() で再びJSON文字列にシリアライズする
また、GsonBuilder().setPrettyPrinting().create() を使用することで、インデント付きの見やすい整形済みJSONを出力できる点にも注目してください。デバッグ時やログ出力時に非常に便利です。
-
Javaで既存のJSONファイルにJSON文字列を追加する方法【Gson活用ガイド】
GsonはJava向けの代表的なJSONライブラリで、JSONデータの生成や解析に幅広く利用されています。既存のJSONファイルに新しいJSON文字列を追加するには、いくつかのステップを踏む必要があります。 処理の流れ 基本的な手順は以下のとおりです。 JSONファイルを読み込み、Javaオブジェクトとしてパースします。 JavaオブジェクトをJsonObjectに型キャストし、さらにJsonArrayとして取得します。 JSON配列を反復処理しながら、各JsonElementを出力します。 JsonWriterクラスを使用すると、JSONエンコードされた値を1トークンずつストリームへ書き込
-
【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法
GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを