这看起来非常简单,但我无法解决这个异常。我正在使用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,所以我自己无法轻易地测试这个理论。
谢谢!
答案 0 :(得分:2)
您有拼写错误:尝试将jsonRes.getJSONArray("list");
更改为jsonObj.getJSONArray("list");
答案 1 :(得分:2)
你的专栏:
JSONArray diaList = jsonRes.getJSONArray("list"); //exception thrown
应该是:
JSONArray diaList = jsonObj.getJSONArray("list"); //all good!