Gsonを使ってデータをJSONファイルに保存する
1概要
Gson
は、JavaオブジェクトをJSON表現に変換することを可能にするJavaライブラリです。 JSON文字列を同等のJavaオブジェクトに変換するために、逆に使用することもできます。
このクイックチュートリアルでは、さまざまなJavaデータ型をJSONとしてファイルに保存する方法について説明します。
2 Mavenの依存関係
まず最初に、
pom.xml
にGson依存関係を追加する必要があります。これはhttps://search.maven.org/classic/#search%7Cgav%7C1%7Cg%3A%22com.google.code.gson%22%20AND%20a%3A%22gson%22[Maven Central]で利用可能です。 :
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
3データをJSONファイルに保存する
Gson gson = new Gson();
これで、
toJson
()を呼び出してJavaオブジェクトを変換して保存できます。
Javaでデータ型が異なるいくつかの例を調べてみましょう。
3.1. プリミティブ
GSONを使用してJSONファイルにプリミティブを保存するのはかなり簡単です。
gson.toJson(123.45, new FileWriter(filePath));
ここで、
filePath
はファイルの場所を表します。ファイル出力には単純に基本値が含まれます。
123.45
3.2. カスタムオブジェクト
同様に、オブジェクトをJSONとして保存できます。
まず、単純な
User
クラスを作成します。
public class User {
private int id;
private String name;
private transient String nationality;
public User(int id, String name, String nationality) {
this.id = id;
this.name = name;
this.nationality = nationality;
}
public User(int id, String name) {
this(id, name, null);
}
}
それでは、
User
オブジェクトをJSONとして格納します。
User user = new User(1, "Tom Smith", "American");
gson.toJson(user, new FileWriter(filePath));
ファイル出力は次のようになります。
{"id":1,"name":"Tom"}
フィールドが
transient
とマークされている場合、デフォルトで無視され、JSONのシリアライゼーションまたはデシリアライゼーションに含まれません。その結果、
nationality
フィールドはJSON出力には表示されません。
また、デフォルトで、Gsonはシリアル化中にnullフィールドを省略します。この例を考えてみましょう。
gson.toJson(new User(1, null, "Unknown"), new FileWriter(filePath));
ファイル出力は次のようになります。
{"id":1}
シリアル化にnullフィールドを含める方法については後で説明します。
3.3. コレクション
オブジェクトのコレクションを同じように格納することができます。
User[]users = new User[]{ new User(1, "Mike"), new User(2, "Tom") };
gson.toJson(users, new FileWriter(filePath));
この場合、ファイル出力は
User
オブジェクトの配列になります。
----[{"id":1,"name":"Mike"},{"id":2,"name":"Tom"}]----
4
GsonBuilder
を使用する
デフォルトのGson設定を調整するには、http://static.javadoc.io/com.google.code.gson/gson/2.8.5/com/google/gson/GsonBuilder.html[
GsonBuilder
]を使用できます。クラス。
このクラスはビルダーパターンに従います。通常、最初にさまざまな設定メソッドを呼び出して目的のオプションを設定し、最後に
create()
メソッドを呼び出すことで使用されます。
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();
ここでは、プリティプリントオプションをデフォルトで
false
に設定しています。同様に、シリアル化にnull値を含めるには、
serializeNulls()
を呼び出します。利用可能なオプションはhttp://static.javadoc.io/com.google.code.gson/gson/2.8.5/com/google/gson/Gson.html#method.detail[here]に記載されています。
5結論
このクイック記事では、さまざまなJavaデータ型をJSONファイルにシリアル化する方法について理解しました。 JSONに関するさまざまな記事を調べるには、このトピックに関するhttps://www.baeldung.com/category/json/[その他のチュートリアル]をご覧ください。
いつものように、コードスニペットはhttps://github.com/eugenp/tutorials/tree/master/gson[このGitHubレポジトリ]にあります。