从JSONArray中提取JSONObject?

时间:2017-08-20 11:22:21

标签: android

我正试图从“当前”数组中提取“价格”对象,我已经在这几个小时了,没有运气,任何帮助都表示赞赏! :)

try {
            URL url = new URL("http://services.runescape.com/m=itemdb_rs/api/catalogue/detail.json?item=2");
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            try {
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                StringBuilder stringBuilder = new StringBuilder();
                String line;
                while ((line = bufferedReader.readLine()) != null) {
                    stringBuilder.append(line).append("\n");
                }
                bufferedReader.close();
                return stringBuilder.toString();
            } finally {
                JSONArray nu1 = jobj.getJSONArray("current");
                JSONObject jobj = nu1.getJSONObject(0);
                String price = jobj.getString("price");
                Toast.makeText(getApplicationContext(), price, Toast.LENGTH_SHORT).show();
            }

        } catch (Exception e) {
            Log.e("ERROR", e.getMessage(), e);
            return null;
        }
    }

    protected void onPostExecute(String response) {

    }
}

}

1 个答案:

答案 0 :(得分:1)

我试图从您的网址获得回复。这是回复:

{
"item": {
    "icon": "http://services.runescape.com/m=itemdb_rs/1502782993572_obj_sprite.gif?id=2",
    "icon_large": "http://services.runescape.com/m=itemdb_rs/1502782993572_obj_big.gif?id=2",
    "id": 2,
    "type": "Ammo",
    "typeIcon": "http://www.runescape.com/img/categories/Ammo",
    "name": "Cannonball",
    "description": "Ammo for the Dwarf Cannon.",
    "current": {
        "trend": "neutral",
        "price": 339
    },
    "today": {
        "trend": "positive",
        "price": "+1"
    },
    "members": "true",
    "day30": {
        "trend": "positive",
        "change": "+1.0%"
    },
    "day90": {
        "trend": "negative",
        "change": "-11.0%"
    },
    "day180": {
        "trend": "negative",
        "change": "-21.0%"
    }
}
}

响应中没有数组。

编辑:

假设您将响应存储在名为response的字符串中,您可以使用以下代码获取价格:

        JSONObject json = new JSONObject(response);
        JSONObject item = json.getJSONObject("item");
        JSONObject current = item.getJSONObject("current");
        int price = current.getInt("price");

Edit2:使用

String response =  stringBuilder.toString();

然后从'响应'创建一个JSONObject。