在android java中设置动态SerializedName注解
Posted
技术标签:
【中文标题】在android java中设置动态SerializedName注解【英文标题】:Set Dynamic SerializedName annotation in android java 【发布时间】:2021-12-26 15:04:03 【问题描述】:请解决这个问题,我是 android 新手。
我需要能够在每次调用时编辑@SerializedName 注释中的值。这是 JSON 响应:
"rates":
"INR": //Problem with INR
"currency_name": "Indian rupee",
"rate": "74.4600",
"rate_for_amount": "74.4600"
这是我的数据类:
public class Rates
@SerializedName("INR") //Set dynamic serializedName annotation here
private INR INR;
public CurrencyConverterResponse.INR getINR()
return INR;
public class INR
@SerializedName("currency_name")
private String currencyName;
@SerializedName("rate")
private String rate;
@SerializedName("rate_for_amount")
private String rateForAmount;
public String getCurrencyName()
return currencyName;
public String getRate()
return rate;
public String getRateForAmount()
return rateForAmount;
【问题讨论】:
这看起来像Rates
应该包含一个Map<String, Rate>
,其中Rate
是您在代码sn-p 中命名的INR
类。
@CommonsWare 你能用我的代码做一个例子吗,我看不懂对不起!
【参考方案1】:
如果你的货币有限,所以你在响应类中使用这样的
public class Rates
@SerializedName(value = "INR", alternate = "USD", "GBP", "EUR", "CHF")
private Rate rate;
public Rate getRate()
return rate;
【讨论】:
【参考方案2】:对于无限数量的选项,您应该使用Map
这样它会返回货币名称和汇率,如果您想获得多个汇率,此解决方案也可以工作
public class Rates
private Map<String, Rate> rates;
public Map<String, Rate> getRates()
return rate;
【讨论】:
以上是关于在android java中设置动态SerializedName注解的主要内容,如果未能解决你的问题,请参考以下文章