2016-11-25 48 views
-1

我使用Retrofit來提出API請求。事情是,項目並沒有被我寫,目前我正在重寫API調用,因爲它們是用手動HttpRequest結構製作的。這個問題是,如果沒有服務器返回值「false」,出於某種原因在字段「photoUrl」,這是不好的,但問題是由於這個問題造成的。所以,這是場:Gson + Retrofit,它是如何工作的?

private String photoUrl; 

我認爲,當改造響應將被轉換爲對象,制定者將被用於設置一個值,所以暫時我做了將其設置爲null如果「假的條件「即將到來,以防止進一步的用戶交互的問題有一個應用程序,這裏的設置方法:

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

令我驚訝的是,條件不工作,而這正是提出了我的問題:是不是GSON應該使用setter將值設置爲私有字段?

+0

請檢查您使用的字符串值是否爲'false' – Saveen

+0

@Saveen,thx用於回覆,但如果不是,Gson如何正確地將其轉換爲字符串? –

+0

你可以在設置任何值之前檢查它,如果檢查是正確的,那麼它也可以在setter中使用。 – Saveen

回答

0

不,GSON使用反射直接設置字段值。

它不使用getters/setters,也沒有使用getters/setters的選項。

+0

但誰是doint:field.setAccessible(true); ? Gson本身? –

+0

另一個:那麼我無法控制哪個值將被設置,並且根本不能設置這個檢查? –

+0

您可以手動定義類型適配器來覆蓋此行爲,但如果我記得正確的話。 – EpicPandaForce