Java:Simple JSON数组抛出“org.JSON.JSONException:No value for…”

Java:Simple JSON数组抛出“org.JSON.JSONException:No value for…”,java,android,arrays,json,eclipse,Java,Android,Arrays,Json,Eclipse,这看起来很简单,但我无法回避这个例外。我正在使用EclipseADT,正在做一个基本的Android项目。下面是我正在解析的JSON: { "activated": 1, "message": [ { "type": "dialog", "name": "testdialog01", "list": [ "Truck 001",

这看起来很简单,但我无法回避这个例外。我正在使用EclipseADT,正在做一个基本的Android项目。下面是我正在解析的JSON:

{
    "activated": 1,
    "message": [
        {
            "type": "dialog",
            "name": "testdialog01",
            "list": [
                "Truck 001",
                "Truck 002",
                "Truck 003",
                "Truck 004",
                "Truck 006"
            ],
            "heading": "Which truck are you currently driving?",
            "id": 17
        }
    ]
}
下面是我正在解析的代码:

JSONObject jsonRes = new JSONObject(response);
JSONArray msgs = jsonRes.getJSONArray("message");

for (int i=0; i<msgs.length(); i++)
{
    JSONObject jsonObj = msgs.getJSONObject(i);

    String type = jsonObj.getString("type");
    String diaName = jsonObj.getString("name");
    String diaHeading = jsonObj.getString("heading");

    JSONArray diaList = jsonRes.getJSONArray("list"); //exception thrown
}
JSON的列表部分是有效的JSONArray。调试器确认了这一点。当我点击上面的getJSONArray行时,list JSONException得到一个No值。有什么好处?顶层消息数组类似,只是它的值用大括号括起来,而list只是一个字符串数组。我在jsonlint.com上测试了这个JSON,它是有效的,但可能就是不符合标准的org.JSON API?我无法控制传入的JSON,因此我自己也无法轻松测试这个理论


谢谢

您有输入错误:尝试更改jsonRes.getJSONArraylist;到jsonObj.getJSONArraylist

您的线路:

JSONArray diaList = jsonRes.getJSONArray("list"); //exception thrown
应该是:

JSONArray diaList = jsonObj.getJSONArray("list"); //all good!

哦,老兄,真尴尬。哈哈!我已经盯着那个愚蠢的东西看了20分钟,想知道WTF!?谢谢