2016-11-25 49 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