在 android java 中设置 Dynamic SerializedName 注释
Set Dynamic SerializedName annotation in android java
请解决这个问题我是 android 的新手。
我需要能够在每次调用时编辑@SerializedName 注释中的值。这是 JSON 响应:
{
"rates": {
"INR": { //Problem with INR
"currency_name": "Indian rupee",
"rate": "74.4600",
"rate_for_amount": "74.4600"
}
}
}
这是我的数据class:
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;
}
}
如果您的币种有限,那么您可以在响应中这样使用 class
public class Rates {
@SerializedName(value = "INR", alternate = {"USD", "GBP", "EUR", "CHF"})
private Rate rate;
public Rate getRate() {
return rate;
}
}
对于无限数量的选项,您应该使用 Map
这样它将 return 货币名称和汇率,如果您想要接收多个汇率,此解决方案也适用
public class Rates {
private Map<String, Rate> rates;
public Map<String, Rate> getRates() {
return rate;
}
}
请解决这个问题我是 android 的新手。
我需要能够在每次调用时编辑@SerializedName 注释中的值。这是 JSON 响应:
{
"rates": {
"INR": { //Problem with INR
"currency_name": "Indian rupee",
"rate": "74.4600",
"rate_for_amount": "74.4600"
}
}
}
这是我的数据class:
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;
}
}
如果您的币种有限,那么您可以在响应中这样使用 class
public class Rates {
@SerializedName(value = "INR", alternate = {"USD", "GBP", "EUR", "CHF"})
private Rate rate;
public Rate getRate() {
return rate;
}
}
对于无限数量的选项,您应该使用 Map
这样它将 return 货币名称和汇率,如果您想要接收多个汇率,此解决方案也适用
public class Rates {
private Map<String, Rate> rates;
public Map<String, Rate> getRates() {
return rate;
}
}