JSONObject.getJSONArray()无法识别数组

时间:2015-07-07 11:12:33

标签: java json

为什么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.

3 个答案:

答案 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>

<强>解决方案

  1. 从字符串中删除引号:

    String inputJSON = "{'links':[],'format':'csv'}";

  2. 从字符串'[]'创建一个JSONArray:

    JSONArray jsonLinks = new JSONArray(jsonInput.getString("links"));