java之JSONObject 到 ArrayList 方括号丢失

langtianya 阅读:30 2025-01-19 22:14:33 评论:0

我正在尝试将 https://api.ratesapi.io/api/latest 中的费率转换为自定义 ArrayList<Currency> 类的 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 字符串中缺少方括号。

请您参考如下方法:

如果您查看 API 返回的 JSON,您会得到一个 JSON 对象:

{"base":"EUR","rates":{"GBP":0.90033,"HKD":9.1786, ... },"date":"2020-08-06"} 
你可能想做这样的事情:
JSONObject obj = new JSONObject(getJSON("https://api.ratesapi.io/api/latest")); 
JSONObject rates = obj.getJSONObject("rates"); 
final Iterator<String> keys = rates.keys(); 
while (keys.hasNext()) { 
  final String key = keys.next(); 
  final Currency currency = new Currency(key, rates.getDouble(key)); 
  // do something with the Currency 
} 


标签:java
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号