如果json中不存在该字段,Gson会将默认布尔值更改为false

时间:2017-10-11 08:39:11

标签: android gson

我有这样的模特

public class testModel {

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

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

和像这样的json

{
"test2":{}
}

当我用Gson解析这个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的错误吗?

1 个答案:

答案 0 :(得分:0)

我在github https://github.com/google/gson/issues/1168询问了我的问题,并且会员回答正确。

答案:

  

TestModel有一个no-arg构造函数,而Test2隐含有一个   获取TestModel的一个实例。将Test2标记为静态类,它会   工作