为了账号安全,请及时绑定邮箱和手机立即绑定

Android JSON 对象获取

Android JSON 对象获取

隔江千里 2021-05-31 08:14:39
我在从这个 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");

}


查看完整回答
反对 回复 2021-06-02
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信