通过Android中的改进,动态处理相同类型的不同字段的JSON响应

时间:2018-01-31 02:41:59

标签: android rest retrofit rx-java retrofit2

我在我的android项目中使用rofJava(而不是RxJava2)的retrofit2。我有一个接受类型参数的端点。

account_type = "free_account"

响应中的字段根据帐户类型而变化,但数据保持不变。例如,

public class ResponseAccountDetails implements Serializable { @SerializedName("free_account") @Expose private List<Account> account = null; public List<Account> getAccount() { return account; }} 时,POJO

account_type = "paid_account"

public class ResponseAccountDetails implements Serializable { @SerializedName("paid_account") @Expose private List<Account> account = null; public List<Account> getAccount() { return account; }} 时,POJO

{{1}}

单向,更简单的一种,我知道每种类型都有不同的端点和不同的POJO。

有更好更聪明的方法吗?只有一个端点根据提供的参数(account_type)动态地更改响应(字段)。 还有比我上面提到的更好的其他解决方案吗?

我希望我的问题很明确。提前谢谢。

2 个答案:

答案 0 :(得分:2)

您不能为POJO使用替代名称吗?

@SerializedName(value="free_account", alternate={"paid_account"})

有关GSON文档的更多信息here

答案 1 :(得分:0)

在@Diego Nolde之外。你也可以这样使用

public class ResponseAccountDetails implements Serializable {
@SerializedName("paid_account")
@Expose
private List<Account> account1 = null;

@SerializedName("free_account")
@Expose
private List<Account> account2 = null;

public List<Account> getAccount() {
    return account1 !=null?account1 :account2;
}}