【问题标题】:getting values from a Gson object into a HashMap从 Gson 对象中获取值到 HashMap
【发布时间】:2020-07-15 13:41:38
【问题描述】:

我有以下 json 字符串:

"{\"rates\":{\"CAD\":1.5601,\"HKD\":8.4781,\"ISK\":156.1,\"PHP\":55.709,\"DKK\":7.4642,\"HUF\":369.36,\"CZK\":27.369,\"AUD\":1.8053,\"RON\":4.834,\"SEK\":10.9368,\"IDR\":18239.61,\"INR\":83.6004,\"BRL\":5.7349,\"RUB\":86.475,\"HRK\":7.6285,\"JPY\":117.55,\"THB\":36.111,\"CHF\":1.0564,\"SGD\":1.5689,\"PLN\":4.5815,\"BGN\":1.9558,\"TRY\":7.2925,\"CNY\":7.7653,\"NOK\":11.2685,\"NZD\":1.8547,\"ZAR\":19.6619,\"USD\":1.0936,\"MXN\":26.4097,\"ILS\":3.9015,\"GBP\":0.8846,\"KRW\":1346.48,\"MYR\":4.7654},\"base\":\"EUR\",\"date\":\"2020-04-01\"}"

这是一个具有匹配率值的费率列表,这些是从here 检索到的。

我想做的是将字符串反序列化为我已经创建的对象

package com.example.android.myrates.core.json;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class JsonLatestStructure {

    @SerializedName("rates")
    @Expose
    private JsonRatesStructure rates;
    @SerializedName("base")
    @Expose
    private String base;
    @SerializedName("date")
    @Expose
    private String date;

    public JsonRatesStructure getRates() {
        return rates;
    }

    public void setRates(JsonRatesStructure rates) {
        this.rates = rates;
    }

    public String getBase() {
        return base;
    }

    public void setBase(String base) {
        this.base = base;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

}

我目前有一个创建新 Gson 对象的方法,我希望能够将所有速率名称和匹配的速率值放入哈希图中。

JsonLatestStructure jsonData = new Gson().fromJson(rateListPresenter.getLatestRateList(), JsonLatestStructure.class);

提前致谢!

更新:

我通过这样做完成了我想要的:

JsonLatestStructure jsonData = new Gson().fromJson(rateListPresenter.getLatestRateList(), JsonLatestStructure.class);

Map<String, Double> rateListItems = jsonData.getRates();

【问题讨论】:

    标签: java android json hashmap gson


    【解决方案1】:

    在下面尝试它将返回所有动态键和值列表

    JSONObject data = jsonResponse.getJSONObject("rates");// here response is server response
        Iterator keys = data.keys();
    
        while(keys.hasNext()) {
            // loop to get the dynamic key
            String key = (String)keys.next();  // it returns a key ;ile CAD, HKD etc...
    
            // get the value of the dynamic key
            int value = data.getInt(key);      // it returns a value like 1.5601,8.4781 etc...
    
        }
    

    【讨论】:

    • 感谢您的帮助,但我最终做了更新后的问题
    猜你喜欢
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多