value = nullのマップエントリを無視するGson


132
Gson gson = new Gson();

Map<String,Object> map = new HashMap<String, Object>();
map.put("a", 1);
map.put("b", null);

System.out.println(gson.toJson(map)); //prints {"a":1}

すべてのエントリを含めるにはどうすればよいですか?

回答:


299

Gson User Guide-Null Object Supportを参照してください。

Gsonに実装されているデフォルトの動作では、nullオブジェクトフィールドは無視されます。これにより、よりコンパクトな出力形式が可能になります。ただし、JSON形式はJava形式に変換されるため、クライアントはこれらのフィールドのデフォルト値を定義する必要があります。

次に、nullを出力するようにGsonインスタンスを構成する方法を示します。

Gson gson = new GsonBuilder().serializeNulls().create();

10
マニュアルは検索のためにより最適化されるべきです。少量の特技を使用するとき、私はすべてを読むつもりはありません。これはグーグルの最初の結果でした。私の問題を修正しました。
Mathijs Segers 2015年

1
@MathijsSegersいくつかの素晴らしいライブラリにはドキュメントがありません。彼らのソースコードを通過するのに多くの問題を抱えています(これもまた多くのビルダーパターンとすべてで発生しています)。
pinkpanther

13
@MathijsSegersそして、これがSOとGoogleの美点です。「gson ignore null」をググると、マニュアルとその中の答えを探す代わりに、3秒でこの答えを見つけることができます。
joshden '20年

2
クラス内のすべてのNULLフィールドではなく、1つのNULLフィールドのみを含める方法は?必須フィールドの上に追加できる注釈はありますか?
Salam El-Banna

この解決策は合理的であり、私はそれが機能することを期待していました!しかし、そうではありません!何か案は?
アルマンラメザンツァデ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.