为什么JSONObject.getJSONArray()
无法识别数组?空虚有影响吗?
这里有Java代码:
String inputJSON = "{'links':'[]','format':'csv'}";
JSONObject jsonInput = null;
try {
jsonInput = new JSONObject(inputJSON);
String formatExport = jsonInput.getString("format");
JSONArray jsonLinks = jsonInput.getJSONArray("links");
}
得到以下例外:
java.util.NoSuchElementException: JSONObject["links"] is not a JSONArray.
答案 0 :(得分:3)
'links':'[]'
这不是JSONArray
。它应该是'links':[]
,而不是''
引号。任何带有''
引号的内容基本上都表现为String
。
要将links
转换为JSONArray
,您可以尝试: -
JSONArray links = new JSONArray((String)jsonInput.get("links"));
答案 1 :(得分:2)
你的字符串不是有效的JSON。它应该使用双引号。但即使它确实如此,"阵列"被引用。所以它不是一个数组,而是一个字符串。
答案 2 :(得分:1)
例外说明:
代码中的'links':'[]'
属性是字符串。引号之间的任何内容'wh4t3v3r'
都将被视为一个字符串,您要将链接视为JSONArray
,而不是。{/ p>
<强>解决方案强>:
从字符串中删除引号:
String inputJSON = "{'links':[],'format':'csv'}";
从字符串'[]'
创建一个JSONArray:
JSONArray jsonLinks = new JSONArray(jsonInput.getString("links"));