[英]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.