在获取jsonobject时,Android Retrofit始终为类型boolean返回false值

时间:2016-10-22 09:50:59

标签: android json boolean retrofit jsonobject

我是使用改装的新手,在这里我遇到了一个问题,即改装总是为布尔类型对象返回false,实际上是1(真)我正在重新找回。

下面是我的用于重新搜索数据的pojo类

public class JobsModel implements Serializable {

@SerializedName("posted_on")
private String postedOn;
@SerializedName("is_active")
private boolean isActive=false;

public JobsModel(String postedOn, boolean isActive) {
    this.postedOn=postedOn;
    this.isActive=isActive;
}

public Boolean getPostedOn() {
    return postedOn
}

public void setPostedOn(String postedOn) {
    postedOn= postedOn
}

public Boolean getActive() {
    return isActive;
}

public void setActive(Boolean active) {
    isActive = active;
}

}

任何帮助将不胜感激

4 个答案:

答案 0 :(得分:0)

首先,您必须确保@SerializedName("is_active")正确且与您的json名称相匹配。

此外,您不需要初始值,如:

private boolean isActive=false;

我修改了你的getter和setter。你可以试试这个:

public boolean getActive() {
    return isActive;
}

public void setActive(boolean active) {
    isActive = active;
}

如果您正在使用Retrofit 2.0,那么解析boolean会有一种奇怪的行为(我认为这是一个错误)。

当我们尝试解析名称以boolean开头的"I" json对象时,它总是返回false。这与你无关,但也许有这样的问题。如果可以,您可以尝试为对象使用不同的json名称。

答案 1 :(得分:0)

布尔值是Java中的原始类型,它的默认值为false 如果你的json is_active值没有任何值,那么is_active默认为false! 为避免此问题,请使用Boolean not boolean type!

答案 2 :(得分:0)

首先将私人boolean isActive=false;更改为private boolean Active;

其次改变

   public void setActive(Boolean active) {
        isActive = active;   }

public void setActive(boolean active) {
    Active = active;

}

并且如果您的JSON包含以I开头的任何对象,则更改它,因为它将始终返回false。 希望这对你有所帮助。

答案 3 :(得分:-1)

您已将此初始化为false。这样做

private boolean isActive;