Android 有效的JSON未被识别为对象或数组

Android 有效的JSON未被识别为对象或数组,android,python,json,Android,Python,Json,我有一个返回JSON格式的查询 [["e1", "[{"l1": "A", "l2": "B"}, {"l3": "C", "l4": "D"}]", "1"], ["e2", "[{"l5": "E", "l6": "F"}, {"l7": "G", "l8": "H"}]" , "2"]] 已转储一个Python列表以生成此JSON。我听说它的格式是[“label”、“JSON”、“ID”]。jsonlint.com显示JSON是有效的,但我不知道如何从中提取对象/数组,在Android中

我有一个返回JSON格式的查询

[["e1", "[{"l1": "A", "l2": "B"}, {"l3": "C", "l4": "D"}]", "1"], ["e2", "[{"l5": "E", "l6": "F"}, {"l7": "G", "l8": "H"}]" , "2"]]
已转储一个Python列表以生成此JSON。我听说它的格式是[“label”、“JSON”、“ID”]。jsonlint.com显示JSON是有效的,但我不知道如何从中提取对象/数组,在Android中解析它

我会犯这样的错误

“java.lang.String无法转换为JSONArray。”

“分析数据org.json.JSONException时出错:java.lang.String类型的值DOCTYPE无法转换为JSONObject。”

如何解析此查询?

您的json无效

您有四个错误,请参阅下面的列表和相应的修复

"[{"l1" -> [{"l1"
"D"}]" -> "D"}]
"[{"l5" -> [{"l5"
"H"}]" -> "H"}]
最终结果是:

[["e1", [{"l1": "A", "l2": "B"}, {"l3": "C", "l4": "D"}], "1"], ["e2", [{"l5": "E", "l6": "F"}, {"l7": "G", "l8": "H"}] , "2"]]

希望有帮助。

以布鲁诺的答案为基础。JSON是无效的,即使Bruno使它在语法上有效,它在Android中仍然不太可解析。JSON基于键值对。Android的JSON实现需要这种结构。为了从JSON中提取第一个数组,您需要将密钥指定为字符串,以便获得访问权限(JSON没有)。我相信您仍然可以通过使用它们的键来提取值

考虑以下内容,它向您展示了如何从Bruno更正的JSON的
字符串创建
JSONObject

try {
    JSONObject jsonObject = new JSONObject("[[\"e1\", [{\"l1\": \"A\", \"l2\": \"B\"}, {\"l3\": \"C\", \"l4\": \"D\"}], \"1\"], [\"e2\", [{\"l5\": \"E\", \"l6\": \"F\"}, {\"l7\": \"G\", \"l8\": \"H\"}] , \"2\"]]");
    JSONArray parentArray = jsonObject.getJSONArray("WHAT IS THIS KEY?");
} catch (JSONException e) {
    e.printStackTrace();
}
您甚至无法解析父数组,因为它没有键,而且
getJSONArray()
optJSONArray()
都需要一个
String

如果您只是在寻找一个
JSONArray
,您可以用我在上面演示的方法实例化它,只需将
JSONObject
替换为
JSONArray

try {
    JSONArray jsonArray = new JSONArray("[[\"e1\", [{\"l1\": \"A\", \"l2\": \"B\"}, {\"l3\": \"C\", \"l4\": \"D\"}], \"1\"], [\"e2\", [{\"l5\": \"E\", \"l6\": \"F\"}, {\"l7\": \"G\", \"l8\": \"H\"}] , \"2\"]]");
    //JSONArray parentArray = jsonObject.getJSONArray("WHAT IS THIS KEY?");
} catch (JSONException e) {
    e.printStackTrace();
}

您的第二个错误表明您正在返回某种HTML页面以响应HTTP请求。这就是为什么这个站点要求演示这个问题的原因,在本例中是Java源代码和完整的堆栈跟踪。此外,该JSON是无效的——请尝试将其粘贴到jsonlint.com中。您包含的JSON实际上是无效的。复制错误?测试JSON有效性的好方法:将其粘贴到