Java:简单的JSON数组抛出" org.json.JSONException:没有值..."

时间:2014-12-02 16:23:39

标签: java android arrays json eclipse

这看起来非常简单,但我无法解决这个异常。我正在使用Eclipse ADT并开发基本的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
}

&#34;列表&#34; JSON的一部分是有效的JSONArray。调试器确认了这一点。我得到了一个&#34;没有值列表&#34;当我点击上面的getJSONArray行时出现JSONException。是什么赋予了?顶级&#34;消息&#34;数组是相似的,只有它的值用大括号括起来,而#34; list&#34;只是一个字符串数组。我在jsonlint.com测试了这个JSON并且它有效,但可能只是不同于标准的org.json API?我无法控制传入的JSON,所以我自己无法轻易地测试这个理论。

谢谢!

2 个答案:

答案 0 :(得分:2)

您有拼写错误:尝试将jsonRes.getJSONArray("list");更改为jsonObj.getJSONArray("list");

答案 1 :(得分:2)

你的专栏:

JSONArray diaList = jsonRes.getJSONArray("list"); //exception thrown

应该是:

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