我在我的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)动态地更改响应(字段)。 还有比我上面提到的更好的其他解决方案吗?
我希望我的问题很明确。提前谢谢。
答案 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;
}}