Android:将JSONObject转换为JSONArray返回null

时间:2018-07-04 20:49:57

标签: java android arrays json

我的代码:

JSONObject data = {"result":{"a":[{"artist":"Aney","number:"1"},{"artist":"Aney","number:"2"}],"b":[{"artist":"Boney","number:"3"},{"artist":"Boney","number:"4"}], ....
JSONObject obj = new JSONObject(data.toString());
JSONArray tasks = obj.optJSONArray("result");

但是tasks返回null

我尝试了以下代码,但没有用:

JSONObject data = {"result":{"a":[{"artist":"Money",...
JSONArray tasks = data.optJSONArray("result");

更新:

我的主要代码是:

// get data from main url and reutnr array
JSONArray tasks = data.optJSONArray("result");
if(alert){
    // get data from another url and return object
    JSONObject data = {"result":{"a":[{"artist":"Money",...
    tasks = data.optJSONArray("result");
}

// now i use tasks in my code
if(tasks.length() > 0){
    ....
}

2 个答案:

答案 0 :(得分:1)

当您看到"key": { ... }时,表示keyJSONObject

当您看到"key": [ ... ]时,表示keyJSONArray

在您的情况下,"result"JSONObject,请改写为:

JSONObject tasks = obj.optJSONObject("result");

答案 1 :(得分:0)

JSONArray(a,b)位于根对象内部的对象“结果”内部,因此您必须导航层次结构才能获取它:

JSONObject obj = new JSONObject(data.toString());
JSONObject result = obj.getJSONObject("result");
JSONArray tasksA = result.optJSONArray("a");
JSONArray tasksB = result.optJSONArray("b");

请注意,每个'a'和'b'是要检索的不同JSONArray。