为optJSONArray获取null

时间:2017-10-03 06:38:58

标签: java json

所以我有一句话:

JSONObject res = new JSONObject(result);

这个输出是:

{
  "result": "[\"Pretty Woman\",\"Minions Banana Song\",\"Squatters Rights\",\"Minions Banana\",\"Minions Puppy\"]",
  "id": 0,
  "jsonrpc": "2.0"
} 

然后我有了这句话:

JSONArray moviesJson = res.optJSONArray("result");

并且输出为null。这是我的语法错误吗?我无法弄清楚发生了什么。

我试图将结果中包含的数组作为输出

4 个答案:

答案 0 :(得分:1)

result包含一个数组,但是以单个字符串的形式。您可以将数组作为:

JSONArray moviesJson = new JSONArray(res.getString("result"));

答案 1 :(得分:0)

"result"不包含JSON数组,它是数组的String表示形式。

删除周围的双引号和反斜杠。

变化:

{
  "result": "[\"Pretty Woman\",\"Minions Banana Song\",\"Squatters Rights\",\"Minions Banana\",\"Minions Puppy\"]",
  "id": 0,
  "jsonrpc": "2.0"
}

{
  "result": [
    "Pretty Woman",
    "Minions Banana Song",
    "Squatters Rights",
    "Minions Banana",
    "Minions Puppy"
  ],
  "id": 0,
  "jsonrpc": "2.0"
}

答案 2 :(得分:0)

您目前的整体输出也是一个对象:

{"result":"[\"Pretty Woman\",\"Minions Banana Song\",\"Squatters
Rights\",\"Minions Banana\",\"Minions Puppy\"]","id":0,"jsonrpc":"2.0"}

相应的样本将是:

class Sample {
    String result;
    String id;
    String jsonrpc;
    ...getters and setters
}

您应先尝试解析为JSONObject,然后再取出results数组。

答案 3 :(得分:0)

JSON数组就像

{
  "result": ["Pretty Woman","Minions Banana Song","Squatters Rights","Minions Banana","Minions Puppy"],
  "id": 0,
  "jsonrpc": "2.0"
} 

您正在将其视为JSON Object的字符串。这应该是不经意的 显示空值。

获取JSON数组值

JSONarray result= somejsonobjectname.getJSONArray("Result")