【发布时间】:2020-11-28 00:20:30
【问题描述】:
我正在尝试将 https://api.ratesapi.io/api/latest 的费率转换为自定义 Currency 类的 ArrayList<Currency>:
public class Currency {
private String shortName;
private double rate;
...
}
JSON 看起来像:
{"base":"EUR","rates":{"GBP":0.90033,"HKD":9.1786,"IDR":17304.0,
"ILS":4.0309,"DKK":7.45,"INR":88.765,"CHF":1.0759,"MXN":26.615,
"CZK":26.202,"SGD":1.6236,"THB":36.832,"HRK":7.468,"MYR":4.9604,
"NOK":10.6538,"CNY":8.2325,"BGN":1.9558,"PHP":58.136,"SEK":10.3165,
"PLN":4.4073,"ZAR":20.7655,"CAD":1.5748,"ISK":160.2,"BRL":6.334,
"RON":4.836,"NZD":1.7828,"TRY":8.5853,"JPY":124.96,"RUB":86.9321,
"KRW":1404.99,"USD":1.1843,"HUF":346.23,"AUD":1.6492},"date":"2020-08-06"}
使用org.json,我设法将数据放入JSONObject:
JSONObject obj = new JSONObject(getJSON("https://api.ratesapi.io/api/latest"));
据我了解,现在的正常程序是将JSONObject 转换为JSONArray。但是尝试:
JSONArray jsonArray = obj.getJSONArray("rates");
失败并显示错误消息:
Exception in thread "main" org.json.JSONException: JSONObject["rates"]
is not a JSONArray.
我该如何解决这个错误,或者有没有其他方法可以从 JSON 中创建一个 ArrayList?
我怀疑问题出在 JSON 字符串中缺少方括号。
【问题讨论】:
-
这能回答你的问题吗? simplest way to read json from a URL in java
-
@KaustubhKhare 虽然相关,但该欺骗不会帮助 OP,因为他们要解析的类与 JSON 内容的结构不匹配。
-
这更接近stackoverflow.com/q/22687771/1690217 问题是
rates是一个具有与您的Currency结构匹配的属性 的对象,您需要转换rates对象到它的属性数组中。