Android JSON解析'org.json.JSONObject类型的数据无法转换为JSONArray'错误

时间:2015-07-30 12:28:26

标签: android json parsing

我在android上解析这个JSON -

{
  "data": {
    "is_silhouette": false,
    "url": "https://scontent.xx.fbcdn.net/hphotos-xat1/v/t1.0-9/s180x540/34325347_936407749733967_1354847545689012266_n.jpg?oh=dde033205b1230568dc26b7b01cy5424&oe=56599FD6"
  }
}

我有这段代码 -

                        json = response.getJSONObject();
                        Log.d("json data",json.toString());

                        try {

                            jarray = json.getJSONArray("data");

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

出现此错误 - org.json.JSONObject类型的数据无法转换为JSONArray

有谁能说出错在哪里?任何指针都很受欢迎。

5 个答案:

答案 0 :(得分:3)

JSON数组以[开头,以]结尾: enter image description here

和JSON对象以{开头,以}结尾: enter image description here

所以你需要获得JSONObject而不是JSONArray。 getJSONObject("data")

答案 1 :(得分:2)

数据实例不是数组,而是JSON对象。 因此getJSONArray抛出异常。请改用getJSONObject("data")

答案 2 :(得分:1)

在这里看一下JSON数据类型的例子: http://www.w3schools.com/json/json_syntax.asp

您正在使用object,而不是数组。数组使用'['和']'进行舍入。

答案 3 :(得分:1)

As"数据"是一个JsonObject,你试图以JsonArray的形式访问它,而你正面临这个异常,试试这个:

json = response.getJSONObject();
Log.d("json data",json.toString());

try {
    JSONObject jobject = json.getJSONObject("data");
} catch (JSONException e) {
    e.printStackTrace();
}

答案 4 :(得分:1)

你的json中没有JSON数组。 使用以下代码

String jsonString = "{
  'data': {
    'is_silhouette': false,
    'url': 'https://scontent.xx.fbcdn.net/hphotos-xat1/v/t1.0-9/s180x540/34325347_936407749733967_1354847545689012266_n.jpg?oh=dde033205b1230568dc26b7b01cy5424&oe=56599FD6'
  }
}";
JSONObject jsonObj =  new JSONObject(jsonString);

JSONObject data  =  jsonObj.getJSONObject("data");
String url = data.getString("url");