gpt4 book ai didi

java - GSON不解析 boolean 值(始终为false)

转载 作者:行者123 更新时间:2023-12-04 16:06:59 24 4
gpt4 key购买 nike

我正在使用Retrofit来获取JSON文档。问题是,所有 boolean 值始终为假。

响应如下所示:

{
"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类。像“性别”和“年龄”这样的列表可以很好地工作。尽管如此, boolean 值仍然无法设置。 (这很奇怪,因为通过Retrofit发送此对象正是发送了此文档,因此GSON肯定知道 boolean 值)。

如片段所示,我还尝试了其他方法,例如将 boolean 包装器类指定为类型,而不是boolean。
我还使用了 @SerializeName 批注或getter和setts方法等。
仍然所有 boolean 值始终都是错误的。即使我将它们的默认值声明为true(所以GSON似乎总是用false覆盖此值)。

希望有人有个好主意!

最佳答案

您在示例中解析的JSON的所有值都为false。解析时,GSON将使用反射来覆盖类的字段值,这意味着从JSON解析的任何值都将是该字段的值,而不管它如何在类中初始化。

这是一个示例响应,它将导致将字段设置为true。同样,这取决于要解析的JSON。

{
"gender":[0,1],
"age":[20,30],
"likesLeaveHome":true,
"likesSport":true,
"likesCulture":true,
"likesTraveling":true
...
}

关于java - GSON不解析 boolean 值(始终为false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37718798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com