如何循环所有这些数据以将其保存到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);
}