JSONObject解析

问题描述 投票:1回答:1

这是我要做的方式,但我在行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();
    }
}
android json parsing
1个回答
1
投票

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

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

Iterator<String> orderIterator = orders.keys();

while (orderIterator.hasNext()) {
    JSONObject c = orders.getJSONObject(orderIterator.next());
    // ...
}

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

© www.soinside.com 2019 - 2024. All rights reserved.