如何在Android中解析另一个JSON数组中的JSON数组

7

请帮助我... 我正在进行一个项目,从Web服务中获取JSON格式的数据。我试图解析它,但是我无法做到。我有这个JSON数据-

 {
        "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"
                        }
                    ]
                }
            ]
        }
    }

我能成功获取“foods”数组,但在尝试获取“content”数组和食品名称数据时遇到了困难。

我正在使用以下代码,但没有找到任何解决方案,请检查此代码片段。

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
                    }
                }

请查看此网址以获取Web服务响应- WEB-SERVICE URL

你不需要实例化一个新的JSONArray,只需像对待食品数组一样使用getJSONArray()获取即可。 - fasteque
@fasteque 你的意思是我应该这样做吗?_JSONArray FoodArray = response.getJSONArray("content");? - Manish Srivastava
@Rohit,你有没有检查下面给出的链接?请使用jsonlint,数组没问题。 - Manish Srivastava
@DharaShah 在使用gson时,我不需要手动解析吗?你有任何演示可以提供吗? - Manish Srivastava
@ManishSrivastava 是的,您不需要手动解析,只需确保实体已经定义好。可以参考以下示例:http://www.javacreed.com/simple-gson-example/ 或者 mkyong 的网站:http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/,如果有帮助的话,还可以看一下这个链接:http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html。 - Rat-a-tat-a-tat Ratatouille
显示剩余4条评论
2个回答

4
你需要用这段代码替换你的相应部分代码:

此代码替换为您的代码:

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

是的亲爱的,你说得对,它正在工作...非常愚蠢的错误 :) 谢谢! - Manish Srivastava
那么请接受它作为正确答案,以便其他用户也可以从中受益。 - arshu
好的,如果可能的话,请给我的问题点个赞。 - Manish Srivastava

2

请问能否帮忙检查一下这个URL?并且不使用gson库进行解析。 一切都没问题,只是我可能犯了一些愚蠢的错误。 - Manish Srivastava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接