2016-10-22 4 views
1

私はretrofitを使用して新しいです。ここではretrofitがboolean型オブジェクトに対してfalseを返す問題に固執しています。Android Retrofitは、jsonobjectをフェッチしているときに常にboolean型のfalse値を返します。

ここ下記retrivingデータ

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; 
} 

}

のための私のPOJOクラスは、任意のヘルプははるかに

+0

おそらく@SerializedName( "is_active")が間違っています。この行を確認してください。 –

答えて

0

をいただければ幸いあなたはすでにこれをfalseとして初期化されます。これを行う

private boolean isActive; 
0

まず、@SerializedName("is_active")が正しいことを確認し、jsonの名前に一致する必要があります。

また、あなたは次のように値を初期化する必要はありません。

private boolean isActive=false; 

私はあなたのゲッターとセッターを修正しました。

public boolean getActive() { 
    return isActive; 
} 

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

あなたがレトロフィット2.0を使用している場合booleanを解析に関する奇妙な行動は(私はそれはバグだと思う)があります:あなたはこれを試すことができます。

booleanという名前のjsonオブジェクトを解析しようとすると、"I"で始まり、常にfalseが返されます。これはあなたとは関係ありませんが、おそらくこのような問題があります。可能であれば、オブジェクトに異なるjson名を使用することができます。

+0

だから私たちは値のブール値 –

+0

を試してみることができます。あなたのコードをリファクタリングしました。私の答えにあなたのコードを置き換えてみてください。 – savepopulation

0

ブールはJavaのプリミティブ型です。デフォルト値はfalseです jsonのis_active値に値がない場合、デフォルトではis_activeがfalseになります。 この問題を回避するには、Boolean型ではなくBoolean型を使用してください。すべての最初の

0

は、第二に変更するプライベートboolean isActive=false;private boolean Active;

に変更

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

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

} 

へとあなたのJSONは、Iで始まる任意のオブジェクトが含まれている場合、それは意志原因そして、それを変更常にfalseを返します。 これはあなたに役立つことを願っています。

関連する問題