我有这样的模特
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标记为静态类,它将
工作。