29

Java オブジェクトを json に変換する必要があるという要件があります。

そのためにGsonを使用していますが、null以外または空でない値のみをシリアル化するコンバーターが必要です。

例えば:

//my java object looks like
class TestObject{
    String test1;
    String test2;
    OtherObject otherObject = new OtherObject();
}

このオブジェクトをjsonに変換する私のGsonインスタンスは次のようになります

Gson gson = new Gson();
TestObject obj = new TestObject();
obj.test1 = "test1";
obj.test2 = "";

String jsonStr = gson.toJson(obj);
println jsonStr;

上記の印刷では、結果は次のとおりです。

{"test1":"test1", "test2":"", "otherObject":{}}

ここで私はただ結果が欲しかった

{"test1":"test1"}

test2 が空で、otherObject が空であるため、それらを json データにシリアライズしたくありません。

ところで、私はGroovy/Grailsを使用しているので、これに適したプラグインがあれば、gsonシリアライゼーションクラスをカスタマイズする提案がなければ良いでしょう。

4

3 に答える 3

3

問題はgsonにはないようです。Gson は、null と空の文字列の違いを正しく追跡します。その区別を消去してもよろしいですか?TestObject を使用するすべてのクラスが気にしないでよろしいですか?

違いを気にしない場合にできることは、シリアル化する前に TestObject 内で空の文字列を null に変更することです。または、空の文字列が null に設定されるように TestObject のセッターを作成します。そうすれば、空の文字列が null と同じであることをクラス内で厳密に定義できます。セッターの外で値を設定できないようにする必要があります。

于 2013-08-28T15:18:20.593 に答える