GSON更改默认布尔值false,如果该字段不以JSON
问题描述:
存在我的模型是这样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?
答
我在github https://github.com/google/gson/issues/1168问了我的问题,并且一个成员回答正确。
答案:
TestModel有一个无参数的构造函数,而隐含的Test2有一个 需要TestModel的一个实例。将Test2标记为静态类,它将 工作。
不,我只是自己测试过a和b都是假的 –
@SamuelRobert你的Gson版本是什么? –
“2.8.0”版本; 'com.google.code.gson:gson:2.8.0' –