【发布时间】:2016-10-09 16:24:38
【问题描述】:
我正在使用 Retrofit 来获取 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 类。像“性别”和“年龄”这样的列表工作得很好。尽管如此,布尔值仍无法设置。 (这特别奇怪,因为通过 Retrofit 发送这个对象发送的正是这个文档,所以 GSON 肯定知道布尔值)。
如截图所示,我还尝试了其他方法,例如将 Boolean 包装类作为类型而不是布尔值。 我还使用了 @SerializeName 注释或 getter 和 setts 方法等。 仍然所有布尔值总是错误的。即使我将它们默认为 true(所以 GSON 似乎总是用 false 覆盖这个值)。
希望有人有一个好主意!
【问题讨论】:
-
你用的是什么版本?我试过“2.6.2”,效果很好。 "
com.google.code.gson gson 2.6.2 " -
嗯,我使用的是改造框架中的内部版本,但据我所知这是 2.6.2。
-
我还在等待解决方案@TobiasReich
-
好吧,我已经有一段时间没有解决这个问题了,但到目前为止它似乎现在可以工作了。我不确定他们是否更改了 API 中的某些内容。我现在正在使用改造 2.1.0。也许这就是解决方案。如果我有时间,我会给出答案。
-
遇到同样的问题:/
标签: java json boolean gson retrofit