Javaで既存のJSONファイルにJSON文字列を追加する方法【Gson活用ガイド】
GsonはJava向けの代表的なJSONライブラリで、JSONデータの生成や解析に幅広く利用されています。既存のJSONファイルに新しいJSON文字列を追加するには、いくつかのステップを踏む必要があります。
処理の流れ
基本的な手順は以下のとおりです。
- JSONファイルを読み込み、Javaオブジェクトとしてパースします。
- JavaオブジェクトをJsonObjectに型キャストし、さらにJsonArrayとして取得します。
- JSON配列を反復処理しながら、各JsonElementを出力します。
- JsonWriterクラスを使用すると、JSONエンコードされた値を1トークンずつストリームへ書き込めます。
- 最後に、新しいJSON文字列を既存のJSONファイルに書き込みます。
サンプルコード
import java.io.*;
import java.util.*;
import com.google.gson.*;
import com.google.gson.stream.*;
import com.google.gson.annotations.*;
public class JSONFilewriteTest {
public static String nameRead;
public static void main(String[] args) {
try {
JsonParser parser = new JsonParser();
Object obj = parser.parse(new FileReader("employee1.json"));
JsonObject jsonObject = (JsonObject) obj;
System.out.println("employee1.jsonファイルの値:\n" + jsonObject);
JsonArray msg = (JsonArray)jsonObject.get("emps");
Iterator<JsonElement> iterator = msg.iterator();
while(iterator.hasNext()) {
nameRead = iterator.next().toString();
System.out.println(nameRead);
}
Name name = new Name();
name.setName("Vamsi");
Gson gson = new Gson();
String json = gson.toJson(name);
FileWriter file = new FileWriter("employee1.json", false);
JsonWriter jw = new JsonWriter(file);
iterator = msg.iterator();
Employees emps = new Employees();
while(iterator.hasNext()) {
emps.addEmployee(gson.fromJson(iterator.next().toString(), Name.class));
}
emps.addEmployee(name);
gson.toJson(emps, Employees.class, jw);
file.close();
System.out.println("既存のemployee1.jsonファイルへのデータ追加が正常に完了しました");
} catch(Exception e) {
e.printStackTrace();
}
}
}
// Nameクラス
class Name {
@Expose
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// Employeesクラス
class Employees {
@Expose
List<Name> emps = new ArrayList<>();
public List<Name> getEmployees() {
return emps;
}
public void addEmployee(Name name) {
this.emps.add(name);
}
}
実行結果
employee1.jsonファイルの値:
{"emps":[{"name":"Adithya"},{"name":"Jai"}]}
{"name":"Adithya"}
{"name":"Jai"}
既存のemployee1.jsonファイルへのデータ追加が正常に完了しました
更新後のemployee1.jsonファイル
上記のコードを実行すると、「Vamsi」という名前の従業員データが既存の配列「emps」の末尾に追加され、ファイル全体が再書き込みされます。実行後のemployee1.jsonファイルは以下のようになります。

ポイント解説
- @Exposeアノテーション:Gsonに対してシリアライズ対象のフィールドを明示的に指定します。デフォルトでは無効化されているため、
GsonBuilder().excludeFieldsWithoutExposeAnnotation()を使う場合に有効です。 - FileWriterの第2引数:
falseを指定すると上書きモードになります。追記したい場合はtrueを指定しますが、JSON構造を維持するには本例のように全データを読み込んでから一括で書き出す方法が安全です。 - JsonWriter:ストリーム形式でJSONを書き込めるため、大きなデータを扱う際にもメモリ効率に優れています。
-
【Java】JSONオブジェクトをファイルに書き込む方法(json-simpleライブラリの使い方)
JSON(JavaScript Object Notation)は、現在もっとも広く使われているデータ交換フォーマットのひとつです。軽量であることと、特定のプログラミング言語に依存しないことが大きな特徴で、異なるシステム間でのデータやり取りに最適です。 JavaでJSONファイルを読み書きするには、json-simple ライブラリが便利です。json-simpleは軽量なJSON処理ライブラリで、JSONテキストのエンコード(書き込み)とデコード(読み込み)の両方に対応しており、JSON仕様(RFC4627)に完全準拠しています。 ライブラリの準備 json-simpleを使用するには、まず
-
JavaでJSONファイルを作成する方法をわかりやすく解説
JSON(JavaScript Object Notation)は、人間が読みやすい形式でデータを交換するために設計された、軽量なテキストベースのオープン標準フォーマットです。JSONの記法は、C、C++、Java、Python、Perlなど、多くのプログラミング言語に精通したプログラマーにとって馴染み深いものとなっています。 JSONドキュメントのサンプル 以下は、書籍情報を格納した典型的なJSONドキュメントの例です。 { book: [ { id: 01, language: Java, ed