【Java】GsonライブラリでnullフィールドをJSONにシリアライズする方法
デフォルト設定では、Gsonはnull値を持つフィールドをJSONにシリアライズしません。Javaオブジェクト内のフィールドがnullである場合、そのフィールドは出力から除外されます。
しかし、GsonBuilderクラスを利用することで、null値も強制的にシリアライズさせることが可能です。具体的には、Gsonオブジェクトを生成する前に、GsonBuilderインスタンスに対してserializeNulls()メソッドを呼び出します。このメソッドを呼び出した後に作成されたGsonインスタンスは、シリアライズ結果のJSONにnullフィールドを含めるようになります。
構文
public GsonBuilder serializeNulls()
コード例
以下は、serializeNulls()を使用してnull値を持つフィールドを出力に含めるサンプルプログラムです。
import com.google.gson.*;
import com.google.gson.annotations.*;
public class NullFieldTest {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
Gson gson = builder.setPrettyPrinting().create();
Employee emp = new Employee(null, 25, 40000.00);
String jsonEmp = gson.toJson(emp);
System.out.println(jsonEmp);
}
}
// Employeeクラス
class Employee {
@Since(1.0)
public String name;
@Since(1.0)
public int age;
@Since(2.0)
public double salary;
public Employee(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
}実行結果
上記のコードを実行すると、nameフィールドがnullであっても、JSON出力に「"name": null」が含まれていることが確認できます。
{
"name": null,
"age": 25,
"salary": 40000.0
}ポイントまとめ
- デフォルトのGsonでは、nullのフィールドはJSONから除外される
- nullも出力したい場合は、GsonBuilderのserializeNulls()を呼び出してからGsonインスタンスを作成する
- setPrettyPrinting()を組み合わせると、整形された読みやすいJSONが出力できる
-
JavaとOpenCVライブラリを使って画像を保存(書き出し)する方法
OpenCVライブラリを利用すると、画像フィルタリング、幾何学的変換、色空間の変換、ヒストグラム処理など、さまざまな画像処理操作を行うことができます。本記事では、その中でも基本的な操作である「画像の読み込みと保存(書き出し)」の方法を解説します。画像を書き出す(保存する)方法Imgcodecsクラスのimread()メソッドを使って画像を読み込むと、その内容はMat(Matrix)オブジェクトに格納されます。読み込んだ画像をファイルとして保存するには、imwrite()メソッドを使用します。imwrite()メソッドは、以下の2つの引数を受け取ります。file:保存先のファイルパスを表す文字列
-
【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法
GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを