2017-10-11 10 views
0

に存在しない場合、私はGsonでこのJSONを解析する際に、私はこのGson変更デフォルトブール値フィールドはJSON

public class testModel { 

    public boolean a = true; 
    public Test2 test2 = new Test2(); 

    public class Test2 { 
     public boolean b = true; 
    } 
} 

この

{ 
"test2":{} 
} 

のようなJSONのようなモデルを持っています

testModel testModel = new Gson().fromJson("{ \"test2\":{}}", testModel.class); 
    Log.e("test", testModel.a + " " + testModel.test2.b); 

とログは次のとおりです。

E/test: true false 

testModel.aは 'true'ですが、testmodel.test2.bは 'false'です なぜGsonはbのデフォルト値を変更したのに対し、bはjsonに存在しませんか? bとaの違いは何ですか?

これはGsonのバグですか?

+0

いいえ。自分でテストしましたが、aとbの両方が偽です。 –

+0

@SamuelRobert Gsonのバージョンは何ですか? –

+0

バージョン '2.8.0'; 'com.google.code.gson:gson:2.8.0' –

答えて

0

github https://github.com/google/gson/issues/1168で質問したところ、メンバーは正しく答えました。

答え:Test2を暗黙的 がTestModelのインスタンスを取るというものを持っていながら、

TestModelは、引数なしのコンストラクタを持っています。 Test2を静的なクラスとしてマークすると、 が動作します。

関連する問題