2016-11-25 15 views
-1

私はAPIリクエストを行うためにRetrofitを使用しています。問題は、プロジェクトは私によって書かれていない、現在私はAPI呼び出しを書き直している、なぜならそれらは手動のHttpRequest構造で作られたからだ。問題は、サーバーが存在しない場合に "photoUrl"フィールドに何らかの理由で "false"という値が返されることですが、この問題のために質問が作成されました。私はレトロフィット応答がオブジェクトに変換されたときに、セッターが値を設定するために使用されることを想定しGson + Retrofit、どうしますか?

private String photoUrl; 

、私はnullかの「偽として設定するための条件を作ったので、一時的な:だから、それはフィールドです"アプリで、さらにユーザーとの対話で問題を防止するために来ている、ここではセッターです:

public void setPhoto_url(String photoUrl) { 
    if(!photoUrl.equals("false")) { 
     this.photoUrl = photoUrl; 
    } 
} 

が驚いたことに、条件が全く機能していない、そしてそれは私の質問提起するものである:をGsonはに想定されていませんsetterを使ってprivateフィールドに値を設定しますか?

+0

「false」を使用した文字列値を確認してください – Saveen

+0

@Saveen、返信用のthxですが、そうでない場合、Gsonは文字列に正しく変換していますか? –

+0

あなたは値を設定する前にそれをチェックすることができ、チェックが正しければセッターでも機能します。 – Saveen

答えて

0

いいえ、GSONは、フィールド値を直接設定するためにリフレクションを使用します。

ゲッタ/セッタを使用せず、ゲッタ/セッタを使用するオプションもありません。

+0

しかし、誰がこれを行うのですか:field.setAccessible(true); ? Gson自身? –

+0

そして、他の1つ:私はすべての値が設定されて制御することはできませんし、このチェックを設定することはできません? –

+0

タイプ・アダプターを手動で定義して、この動作を無効にすることはできますが、私は正しいと思います。 – EpicPandaForce

関連する問題