簡體   English   中英

Android Retrofit在獲取jsonobject時總是返回boolean類型的false值

[英]Android Retrofit always returns false value for the type boolean while fetching jsonobject

我是使用改造的新手,在這里我遇到了一個問題,即改造總是返回布爾型對象的false,而布爾型對象實際上是我正在檢索的1(true)。

下面是我檢索數據的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;
}

}

任何幫助將非常感激

首先,您必須確保@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會有一個奇怪的行為(我認為這是一個錯誤)。

當我們嘗試解析名稱以"I"開頭的boolean json對象時,它總是返回false。 這與您無關,但是可能存在這樣的問題。 如果可以,可以嘗試為對象使用其他json名稱。

Boolean是Java中的原始類型,其默認值是false如果您的json is_active值沒有任何值,則is_active默認為false! 為避免此問題,請使用布爾型而非布爾型!

首先更改private boolean isActive=false; private boolean Active;

其次改變

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

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

}

並且如果您的JSON包含以I開頭的任何對象,然后對其進行更改,因為它將始終返回false。 希望這對您有幫助。

您已經將此初始化為false。 做這個

private boolean isActive;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM