在 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;
    }
}