JSONarray解析显示没有找到值



这是我从URL获取的json

{
responce: "success",
data: [
        {
        Breakfast: [
            {
                food_interval: "Breakfast",
                id: "1",
                menu_creator_id: "1",
                item_code: "13",
                food_interval_category_id: "1",
                food_interval_category: "Main Item",
                item_name: "Methi thepal",
                item_quantity: "1",
                unit_id: "1",
                unit_desc: "Number"
            },
            {
                food_interval: "Breakfast",
                id: "2",
                menu_creator_id: "1",
                item_code: "14",
                food_interval_category_id: "2",
                food_interval_category: "Cereals",
                item_name: "Museli",
                item_quantity: "1",
                unit_id: "7",
                unit_desc: "Bowl "
            },
            {
                food_interval: "Breakfast",
                id: "3",
                menu_creator_id: "1",
                item_code: "15",
                food_interval_category_id: "8",
                food_interval_category: "Bread",
                item_name: "Brown Bread",
                item_quantity: "2",
                unit_id: "1",
                unit_desc: "Number"
            },
            {
                food_interval: "Breakfast",
                id: "4",
                menu_creator_id: "1",
                item_code: "16",
                food_interval_category_id: "21",
                food_interval_category: "Butter Cheese",
                item_name: "Cheddar Cheese",
                item_quantity: "1",
                unit_id: "3",
                unit_desc: "Gram"
             }
           ]
        }
    ]
}

我试过的代码:

String result = response.body().string();
JSONObject jsonObject = new JSONObject(result);
JSONArray foodintervalarray = jsonObject.getJSONArray("data");
for(int i = 0 ; i < foodintervalarray.length(); i++){
    JSONObject jsonObject1 = foodintervalarray.getJSONObject(i);
    JSONArray breakfast = jsonObject1.getJSONArray("Breakfast");
    for(int j = 0 ; j < breakfast.length(); j++){
        JSONObject jsonObject2 = breakfast.getJSONObject(j);
        String breakFastMenu = jsonObject2.getString("food_interval");
        Log.i("breakFastMenu","breakFastMenu "+breakFastMenu);
    }

但我得到:没有发现早餐数组的值。数据数组后有一个{,所以我需要在调用JsonArray吃早餐之前调用JsonObject吗?谁能告诉我该怎么办?

谢谢

JSON格式不正确。你必须用"sign"来包装密钥。首先,试试这个。

在这里测试:http://jsonlint.com/

。,这是正确的

{
    "responce": "success",
    "data": [{
        "Breakfast": [{
            "food_interval": "Breakfast"
        }]
    }]
}

编辑

import org.json.JSONArray;
import org.json.JSONObject;

public class tst {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        final String result = "{"responce":"success","data":[{"Breakfast":[{"food_interval":"Breakfast","id":"1","menu_creator_id":"1","item_code":"13","food_interval_category_id":"1","food_interval_category":"Main Item","item_name":"Methi thepal","item_quantity":"1","unit_id":"1","unit_desc":"Number"},{"food_interval":"Breakfast","id":"2","menu_creator_id":"1","item_code":"14","food_interval_category_id":"2","food_interval_category":"Cereals","item_name":"Museli","item_quantity":"1","unit_id":"7","unit_desc":"Bowl "},{"food_interval":"Breakfast","id":"3","menu_creator_id":"1","item_code":"15","food_interval_category_id":"8","food_interval_category":"Bread","item_name":"Brown Bread","item_quantity":"2","unit_id":"1","unit_desc":"Number"},{"food_interval":"Breakfast","id":"4","menu_creator_id":"1","item_code":"16","food_interval_category_id":"21","food_interval_category":"Butter Cheese","item_name":"Cheddar Cheese","item_quantity":"1","unit_id":"3","unit_desc":"Gram"}],"10 A. M":[{"food_interval":"10 A. M","id":"","menu_creator_id":"","item_code":"","food_interval_category_id":"","food_interval_category":"","item_name":"","item_quantity":"","unit_id":"","unit_desc":""}],"11.30 Soup":[{"food_interval":"11.30 Soup","id":"5","menu_creator_id":"5","item_code":"9","food_interval_category_id":"13","food_interval_category":"Soup","item_name":"Carrot Soup","item_quantity":"1","unit_id":"7","unit_desc":"Bowl "}],"Lunch":[{"food_interval":"Lunch","id":"6","menu_creator_id":"6","item_code":"15","food_interval_category_id":"9","food_interval_category":"Chapati","item_name":"Brown Bread","item_quantity":"4","unit_id":"1","unit_desc":"Number"}],"3.30 PM":[{"food_interval":"3.30 PM","id":"","menu_creator_id":"","item_code":"","food_interval_category_id":"","food_interval_category":"","item_name":"","item_quantity":"","unit_id":"","unit_desc":""}],"7 pm Soup":[{"food_interval":"7 pm Soup","id":"","menu_creator_id":"","item_code":"","food_interval_category_id":"","food_interval_category":"","item_name":"","item_quantity":"","unit_id":"","unit_desc":""}],"Dinner":[{"food_interval":"Dinner","id":"","menu_creator_id":"","item_code":"","food_interval_category_id":"","food_interval_category":"","item_name":"","item_quantity":"","unit_id":"","unit_desc":""}]}]}";
        JSONObject jsonObject = new JSONObject(result);
        JSONArray foodintervalarray = jsonObject.getJSONArray("data");
        for(int i = 0 ; i < foodintervalarray.length(); i++){
            JSONObject jsonObject1 = foodintervalarray.getJSONObject(i);
            JSONArray breakfast = jsonObject1.getJSONArray("Breakfast");
            for(int j = 0 ; j < breakfast.length(); j++){
                JSONObject jsonObject2 = breakfast.getJSONObject(j);
                String breakFastMenu = jsonObject2.getString("food_interval");
                System.out.println("breakFastMenu "+breakFastMenu);
            }
        }
    }
}

我已经测试了这个JSON。但是如果我使用JSOUP,我得到403错误:

final String result = Jsoup.connect("http://dieto.vm1.in/api/menu_display_2d.php?date=2016/08/22&diet_type=6&food_category=1&class_type=1").ignoreHttpErrors(true).get().data();

您必须检查是否在代码中检索此JSON(而不是在浏览器中)

从http://jsonlint.com/检查json的有效性如果这不是一个有效的回应。

之后,创建相应的Response.java类并用Gson解析它。只需根据您的响应编写response. java实体。之后:

Gson gson = new GsonBuilder().create(); 
Response r = gson.fromJson(jsonString, Response.class);

更多的例子,你可以遵循这个教程:http://rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html

你的json文件。HTML没有任何HTML标签只有你的json

最新更新