Java 将Gson对象中的值获取到HashMap中
我有以下json字符串:Java 将Gson对象中的值获取到HashMap中,java,android,json,hashmap,gson,Java,Android,Json,Hashmap,Gson,我有以下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.62
"{\"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\"}"
这是一个具有匹配速率值的速率列表,这些值是从中检索到的
我想做的是将字符串反序列化为一个我已经创建的对象
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对象,我希望能够将所有的速率名称和匹配的速率值都放到一个hashmap中
JsonLatestStructure jsonData = new Gson().fromJson(rateListPresenter.getLatestRateList(), JsonLatestStructure.class);
提前谢谢
更新:
通过这样做,我实现了我想要的:
JsonLatestStructure jsonData = new Gson().fromJson(rateListPresenter.getLatestRateList(), JsonLatestStructure.class);
Map<String, Double> rateListItems = jsonData.getRates();
JsonLatestStructure jsonData=new Gson().fromJson(rateListPresenter.getLatestRateList(),JsonLatestStructure.class);
Map rateListItems=jsonData.getRates();
在下面尝试,它将返回所有动态键和值列表
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...
}
谢谢你的帮助,但我最后做了更新问题上的内容