对JSON数据进行循环以将其保存到HashMap中



如何循环所有这些数据以将其保存到HashMap中?或者可能还有其他更好的解决方案?

响应

{
"rates": {
"CAD": 1.5521,
"HKD": 8.5095,
"ISK": 154.0,
"PHP": 56.125,
"DKK": 7.4606,
"HUF": 355.65,
"CZK": 27.299,
"AUD": 1.8209,
"RON": 4.8375,
"SEK": 11.0158,
"IDR": 17716.88,
"INR": 82.8695,
"BRL": 5.5905,
"RUB": 86.3819,
"HRK": 7.614,
"JPY": 119.36,
"THB": 35.769,
"CHF": 1.0581,
"SGD": 1.5762,
"PLN": 4.5306,
"BGN": 1.9558,
"TRY": 7.0935,
"CNY": 7.7894,
"NOK": 11.6558,
"NZD": 1.8548,
"ZAR": 19.3415,
"USD": 1.0977,
"MXN": 25.8329,
"ILS": 3.9413,
"GBP": 0.89743,
"KRW": 1346.31,
"MYR": 4.7619
},
"base": "EUR",
"date": "2020-03-27"
}

您可以使用gson库直接从json创建自己的对象,该对象包括ratesHashMap反序列化。首先声明你的类如下:

public class Component{
HashMap<String,Float> rates;
String base;
String date;
//...
@Override
public String toString() {
return "Component{" +
"rates=" + rates +
", base='" + base + ''' +
", date='" + date + ''' +
'}';
}
}

然后用反序列化

Component component = new Gson().fromJson(json, Component.class);

下面是一个完整的junit示例:

@Test
public void testDeserialization() {
String json = "    {n" +
"  "rates": {n" +
"    "CAD": 1.5521,n" +
"    "HKD": 8.5095,n" +
"    "ISK": 154.0,n" +
"    "PHP": 56.125,n" +
"    "DKK": 7.4606,n" +
"    "HUF": 355.65,n" +
"    "CZK": 27.299,n" +
"    "AUD": 1.8209,n" +
"    "RON": 4.8375,n" +
"    "SEK": 11.0158,n" +
"    "IDR": 17716.88,n" +
"    "INR": 82.8695,n" +
"    "BRL": 5.5905,n" +
"    "RUB": 86.3819,n" +
"    "HRK": 7.614,n" +
"    "JPY": 119.36,n" +
"    "THB": 35.769,n" +
"    "CHF": 1.0581,n" +
"    "SGD": 1.5762,n" +
"    "PLN": 4.5306,n" +
"    "BGN": 1.9558,n" +
"    "TRY": 7.0935,n" +
"    "CNY": 7.7894,n" +
"    "NOK": 11.6558,n" +
"    "NZD": 1.8548,n" +
"    "ZAR": 19.3415,n" +
"    "USD": 1.0977,n" +
"    "MXN": 25.8329,n" +
"    "ILS": 3.9413,n" +
"    "GBP": 0.89743,n" +
"    "KRW": 1346.31,n" +
"    "MYR": 4.7619n" +
"  },n" +
"  "base": "EUR",n" +
"  "date": "2020-03-27"n" +
"}";
final Component component = new Gson().fromJson(json, Component.class);
System.out.println(component);
}

最新更新