Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to parse JSON Array inside another JSON Array in Android

Please, please help me.. I am working on a project and I am getting data from web-services in JSON format. I am trying to parse it but, I am unable to do it. I have this json-data-

 {
        "response": {
            "status": {
                "code": "1",
                "message": "sucess",
                "user_id": "1"
            },
            "foods": [
                {
                    "char": "A",
                    "content": [
                        {
                            "food_name": "add Malt"
                        },
                        {
                            "food_name": "a la mode"
                        },
                        {
                            "food_name": "Almonds"
                        }
                 ]
            },
            {
                "char": "Z",
                "content": [
                    {
                        "food_name": "Zebra Cakes"
                    },
                        {
                            "food_name": "Zucchini, Baby"
                        },
                        {
                            "food_name": "zxc"
                        }
                    ]
                }
            ]
        }
    }

From here I am successfully able to get "foods" Array but I am getting stuck when I am trying to get "content" array and food_name data.

I am using this code but I did not get any solution, please check this snip code.

protected String doInBackground(String... args) {
                // Building Parameters
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("method","eat_tracking_details"));
                nameValuePairs.add(new BasicNameValuePair("uid",userid));
                // getting JSON string from URL
                JSONObject json = jsonParser.makeHttpRequest(JSONParser.urlname,"GET", nameValuePairs);
                //System.out.println("****json*"+json);
                if (json != null) {
                    try {
                        JSONObject response = json.getJSONObject("response");
                        JSONObject status = response.getJSONObject("status");
                        code = status.getString("code");
                        JSONArray FoodArray = response.getJSONArray("foods");
                        for (int i = 0; i < FoodArray.length(); i++) {
                            String character = FoodArray.getJSONObject(i).getString("char");
                            System.out.println("*****character****************"+character);
                            JSONArray FoodNameArray = new JSONArray(FoodArray.getJSONObject(i).getString("content"));
                            System.out.println("====================///////////"+FoodNameArray);

                            for (int j = 0; j <FoodNameArray.length(); j++) {
                                String Foodname = FoodArray.getJSONObject(j).getString("food_name");
                                System.out.println("@@@@@@@@@@@@@"+Foodname);
                            }
                        }

                    } catch (JSONException e) {
                        // TODO: handle exception
                    }
                }

Check this url for web-service response- WEB-SERVICE URL

like image 987
Manish Srivastava Avatar asked Oct 15 '13 07:10

Manish Srivastava


2 Answers

You need to replace your respective part of code with this code:

for (int j = 0; j < FoodNameArray.length(); j++) {
    String Foodname = FoodNameArray.getJSONObject(j).getString("food_name");
    System.out.println("@@@@@@@@@@@@@" + Foodname);
}
like image 148
arshu Avatar answered Nov 08 '22 17:11

arshu


I believe the best approach would use of GSON library (http://code.google.com/p/google-gson/) . In that case you just have to make your model classes and don't worry about the parsing logic.

like image 2
Aditya Pratap Singh Avatar answered Nov 08 '22 18:11

Aditya Pratap Singh