在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注解的主要内容,如果未能解决你的问题,请参考以下文章

在 Java-Android 中设置链接可点击

android editText如何在代码中设置可以编辑?

如何在 Android Studio 中设置 Java SDK 路径?

如何在highcharts中设置动态数据

在java代码中设置margin

如何在 Android 中设置 libsvm?