尝试创建JSONArray时出现JSONException

时间:2011-01-03 14:16:43

标签: java json

请告诉我为什么我在尝试创建JSONArray实例时遇到异常?

String task = "{'menu': { 'id': 'file', 'value': 'File', 'popup': { 'menuitem': [ {'value': 'New', 'onclick': 'CreateNewDoc()'}, {'value': 'Open', 'onclick': 'OpenDoc()'}, {'value': 'Close', 'onclick': 'CloseDoc()'}] }}}";
        try { 
            JSONObject tmp = new JSONObject(task);
            js = tmp.getJSONArray("menuitem"); // exception fires here
        } catch(JSONException e) {
            e.printStackTrace();
        }

获得例外

01-03 16:12:17.926: WARN/System.err(5999): org.json.JSONException: No value for menuitem

2 个答案:

答案 0 :(得分:5)

'menuitem'不是tmp的孩子。试试这个:

js = tmp.getJSONObject("menu").getJSONObject("popup").getJSONArray("menuitem");

答案 1 :(得分:0)

对我而言,它的工作原理如下:

JSON文件:

{
    "response":
    {
        "results":
        [
            {
                "value1":"1",
                "value2":"2"
            },
            {
                "value1":"1",
                "value2":"2"
            }
        ],
        "status":
        {
            "code":"200",
            "message":"Success"
        }
    }
}

然后:

JSONArray array = responseObject.getJSONArray("results"); 
for (int i = 0; i < array.length(); i++) {
// CREATE YOUR OBJECTS
}