Tob*_*ich 6 java json boolean gson retrofit
我正在使用Retrofit来获取JSON文档.问题是,所有布尔值总是错误的.
响应如下:
{
"gender":[0,1],
"age":[20,30],
"likesLeaveHome":false,
"likesSport":false,
"likesCulture":false,
"likesTraveling":false
...
}
Run Code Online (Sandbox Code Playgroud)
我正在调用改造方法
onResponse(Call<SearchProfile> call, Response<SearchProfile> response)
Run Code Online (Sandbox Code Playgroud)
而应该解析响应的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;
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,它是一个简单的pojo类.像"性别"和"年龄"这样的列表工作得很好.尽管如此,布尔人还是无法设定.(这特别奇怪,因为通过Retrofit发送此对象正好发送此文档,因此GSON肯定知道布尔值).
如剪切中所示,我还尝试了其他方法,例如将布尔包装类作为类型而不是布尔值.我还使用@SerializeName注释或getter和setts方法等.仍然所有布尔值都是假的.即使我声明它们默认为true(因此GSON似乎总是用false覆盖此值).
希望有人有个好主意!
Joh*_*hey -1
您在示例中解析的 JSON 的所有值均为false
. 解析时,GSON 将使用反射来覆盖类的字段值,这意味着从 JSON 解析出的任何值都将是该字段的值,无论它在类中如何初始化。
以下是一个示例响应,它将导致字段设置为 true。同样,这取决于您正在解析的 JSON。
{
"gender":[0,1],
"age":[20,30],
"likesLeaveHome":true,
"likesSport":true,
"likesCulture":true,
"likesTraveling":true
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
735 次 |
最近记录: |