我有这样的模特

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的默认值,而json中不存在b呢?
b和a有什么区别?

是Gson的错误吗?

最佳答案

我在github https://github.com/google/gson/issues/1168中问了我的问题,一个成员回答正确。

回答:


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

10-06 03:19