我在从这个 api 获取数据时遇到问题。我可以请求数据的第一部分,但在“报价”之后我无法获取数据,我需要获取价格。JSON 示例{"data": { "1": { "id": 1, "name": "Bitcoin", "symbol": "BTC", "website_slug": "bitcoin", "rank": 1, "circulating_supply": 17008162.0, "total_supply": 17008162.0, "max_supply": 21000000.0, "quotes": { "USD": { "price": 9024.09, "volume_24h": 8765400000.0, "market_cap": 153483184623.0, "percent_change_1h": -2.31, "percent_change_24h": -4.18, "percent_change_7d": -0.47 } }, "last_updated": 1525137271 }, 请求代码try { JSONObject jsonObject = response.getJSONObject("data"); JSONArray jsonArray = jsonObject.names(); Log.e(TAG,jsonArray.toString()); for(int i=0;i<jsonArray.length();i++){ JSONObject getObjectFromJsonArray=jsonObject.getJSONObject(jsonArray.getString(i)); CoinMarketAPI coin=new CoinMarketAPI(); coin.setId(getObjectFromJsonArray.getString("id")); coin.setName(getObjectFromJsonArray.getString("name")); coin.setSymbol(getObjectFromJsonArray.getString("symbol")); coin.setWebsite_slug(getObjectFromJsonArray.getString("website_slug")); coin.setRank(getObjectFromJsonArray.getString("rank")); coin.setCirculating_supply(getObjectFromJsonArray.getString("circulating_supply")); coin.setTotal_supply(getObjectFromJsonArray.getString("total_supply")); coin.setQuotes(getObjectFromJsonArray.getString("quotes")); if (jsonObject.has("price")){coin.setPrice(getObjectFromJsonArray.getString("price")); }else{ Log.d(TAG, "No price"); } firstlist.add(coin); }}笔记我将硬币放在 if 语句中以查看发生了什么我得到的日志输出是“无价格”因此,出于某种原因,我的代码认为价格中没有数据?
1 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
您没有正确寻找“价格”。您的 if 语句在“数据”下查找价格,它需要在“美元”下查找。
你应该做这样的事情而不是
JSONObject usd = getObjectFromJsonArray.getJSONObject("quotes").getJSONObject("USD");
if (usd.has("price")){
coin.setPrice(usd.getDouble("price"));
}else{
Log.d(TAG, "No price");
}
添加回答
举报
0/150
提交
取消