Java:Simple JSON数组抛出“org.JSON.JSONException:No value for…”
这看起来很简单,但我无法回避这个例外。我正在使用EclipseADT,正在做一个基本的Android项目。下面是我正在解析的JSON: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",
{
"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!?谢谢