java GSON不解析布尔值(始终为false)
我使用改型来获取JSON文档。问题是,所有的布尔人都是假的
答案如下:
{
"gender":[0,1],
"age":[20,30],
"likesLeaveHome":false,
"likesSport":false,
"likesCulture":false,
"likesTraveling":false
...
}
我把改造方法称为
onResponse(Call<SearchProfile> call, Response<SearchProfile> response)
响应应该解析到的SearchProfile类如下所示:
public class SearchProfile {
public ArrayList<Integer> gender = new ArrayList<>(); // works fine
public ArrayList<Integer> age = new ArrayList<>(); // works fine
...
public Boolean likesLeaveHome = true; // always false
@SerializedName("likesSport")
public boolean likesSport = true; // always false
@SerializedName("likesCulture")
public Boolean likesCulture; // always false
@SerializedName("likesTraveling")
public Boolean mLikesTraveling; // always false
public boolean isLikesTraveling() {
return mLikesTraveling;
}
public void setLikesTraveling(boolean likesTraveling) {
mLikesTraveling = likesTraveling;
}
}
如您所见,这是一个简单的pojo类。像“性别”和“年龄”这样的列表效果很好。尽管如此,布尔人还是无法设定。(这尤其奇怪,因为通过改装发送此对象正好发送此文档,所以GSON肯定知道布尔值)
如截图所示,我还尝试了其他方法,比如将Boolean包装类作为type而不是Boolean。 我还使用了@SerializeName注释或getter和setts方法等。 不过,所有的布尔人都是假的。即使我将它们声明为默认值true(因此GSON似乎总是用false覆盖该值)
希望有人有个好主意
# 1 楼答案
在示例中解析的JSON的所有值都是
false
。解析时,GSON将使用反射覆盖类的字段值,这意味着从JSON解析的任何值都将是字段的值,而不管它在类中如何初始化下面是一个将导致字段设置为true的示例响应。同样,这取决于您正在解析的JSON