当有多个内部节点时,如何使用json解析检索数据?

时间:2014-06-27 06:05:49

标签: android json arrays jsonobject

我正在尝试使用Android中的URL使用Json Parsing检索数据。

我已完成以下编码,但我无法弄清楚如何解析内部节点items中存在的节点。

我的json数组和代码发布如下。请一步一步指导我。

Json数组的一部分

[
{
    "items": [
        {
            "id": "11",
            "Item_Id": "123",
            "Item_Name": "Chicken Cream Soup",
            "Price": "8",
            "Currency": "AED",
            "Category": "Soup",
            "Description": "Creamy Chicken Soup with garnish & side helpings",
            "Unit": "2",
            "food_type": "Non",
            "Image_Large": "/images_large/chickensoup.jpg",
            "Image_Thumb": "/images_large/chickensoup.jpg",
            "Timestamp": "6/23/2014 9:49:43 PM",
            "Promotion": "",
            "Item_Name_arabic": "حساء الطماطم",
            "Item_Name_russian": "",
            "Currency_arabic": "درهم",
            "Currency_russian": "",
            "Description_arabic": "حساء الطماطم",
            "Description_russian": "",
            "Note": "",
            "Nutritional_info": "",
            "extrafield_1": "",
            "extrafield_2": "",
            "preferncess": [
                "No Salt",
                "Extra Sugar"
            ],
            "preferncess_ids": [
                "1",
                "2"
            ],
            "price": [
                "4",
                "5"
            ],
            "preferncess_arabic": [
                "لا الملح",
                "سكر اضافية"
            ]
        },

MainActivity.class

 try {
                JSONObject jsonObj = new JSONObject(jsonStr);

                // Getting JSON Array node
                items = jsonObj.getJSONArray(TAG_CONTACTS);
                Log.i("json node",""+items);

                // looping through All Contacts
                for (int i = 0; i < items.length(); i++) {
                    JSONObject c = items.getJSONObject(i);

                    String id = c.getString("id");
                    //String name = c.getString(TAG_NAME);
                    Log.w("myid", id);
                                           } catch (JSONException e) {
                e.printStackTrace();
            }

2 个答案:

答案 0 :(得分:0)

 // fetch item array
 JSONArray  itemObjectArray = jsonStr.getJSONArray("items"); 
 for (int i = 0; i < itemObjectArray.length(); i++) {

        // fetch item object at i position
         JSONObject  itemObject = itemObjectArray.getJSONObject(i); 

        // fetch values  from itemObject 
        String idValue = itemObject.getString("id");
        String noteValue = itemObject.getString("Note");

        // fetch the array 
        JSONArrayprefObject = itemObject.getJSONArray("preferncess");

        // iterate throgh the array like
        for (int i = 0; i < prefObject .length(); i++) {
                  JSONObject p = prefObject .getJSONObject(i);
        }
}

答案 1 :(得分:0)

首选项是json数组,你可以通过c.getJSONArray("preferncess"); and then iterating.来回复它,或者更通用的你可以尝试类似下面的内容

 if (c.get(key) instanceof String)
                     {
                        JSONObject Lawset = c.getString(key);                        
                     } else if (c.get(key) instanceof JSONObject)
                     {
                        JSONObject Lawset = c.getJSONObject(key);                        

                        //try to retrieve data from json object
                     }
                     else if (c.get(key) instanceof JSONArray)
                    {
                        JSONArray Lawset = c.getJSONArray(key);
                                    //iterate to get data
                    }