JSONObject解析

时间:2014-10-06 08:40:46

标签: android json parsing

这是我要做的方式,但我在行JSONObject c = orders.getJSONObject(i);中收到错误:

  

错误:(95,57)错误:不兼容的类型:int无法转换为String

也许有更好的方法来完成这个过程,请帮助

@Override
protected String doInBackground(String... params) {
    try {
        List<NameValuePair> param = new ArrayList<NameValuePair>();
        JSONObject json = jsonParser.makeHttpRequest(URL_ORDERS, "GET",
                param, token);
        JSONObject data = json.getJSONObject("data");
        JSONObject orders = data.getJSONObject("orders");

        Log.d("JSON DATA", data.toString());
        Log.d("JSON ORDERS", orders.toString());

        for (int i = 0; i < orders.length(); i++) {
            JSONObject c = orders.getJSONObject(i);
            imageurl = c.getString(TAG_IMAGE);
            Log.d("IDK", imageurl);
            title = c.getString(TAG_TITLE).substring(0, 20);
            price = c.getString(TAG_PRICE);
            status = c.getString(TAG_PSTATUS);
            symbol = c.getString(TAG_PRICESYMBOL);

            HashMap<String, String> map = new HashMap<String, String>();
            map.put(TAG_TITLE, title);
            map.put(TAG_PRICE, price);
            map.put(TAG_PSTATUS, status);
            map.put(TAG_PRICESYMBOL, symbol);
            map.put(TAG_IMAGE, imageurl);
            orderList.add(map);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:1)

您的orders对象是JSONObject(订单ID用作键,完整订单对象用作值),但在您的代码中,您将其视为{{1} }。

您可能希望按如下方式更改循环:

JSONArray

keys()的调用将在对象的键上返回iterator(在本例中为订单ID)。然后,只需使用迭代器遍历所有键,并使用getJSONObject检索每个订单对象。