2017-10-11 37 views
0

存在我的模型是这样GSON更改默认布尔值false,如果该字段不以JSON

public class testModel { 

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

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

像这样

{ 
"test2":{} 
} 

一个JSON当我解析此JSON与GSON

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中不存在json时改变了b的默认值? b和a有什么区别?

这是一个Gson的bug?

+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问了我的问题,并且一个成员回答正确。

答案:

TestModel有一个无参数的构造函数,而隐含的Test2有一个 需要TestModel的一个实例。将Test2标记为静态类,它将 工作。