[英]Android: JSONObject cannot be converted to JSONArray
我想使用JSON將數據從php文件獲取到Android。 這是我的代碼:
....
HttpEntity e = r.getEntity();
String data = EntityUtils.toString(e);
JSONArray timeline = new JSONArray(data);
JSONObject last = timeline.getJSONObject(0);
return last;
當我調試程序時,在此行上有JSONException:
JSONObject last = timeline.getJSONObject(0);
數據為{"a":1,"b":2,"c":3,"d":4,"e":5}
,並且異常為:
org.json.JSONException: Value {"d":4,"e":5,"b":2,"c":3,"a":1} of type org.json.JSONObject cannot be converted to JSONArray
異常消息非常明確,對JSON語法圖的查看應該是說明性的。 您的代碼收到的JSON字符串是:
{"a":1,"b":2,"c":3,"d":4,"e":5}
此字符串表示一個對象 ,而不是數組。 數組的示例如下:
[1, 2, 3, 4, 5]
甚至這個:
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
注意開始和結束括號。
我認為您會發現異常位置會引起誤導。 我不知道這是某種形式的延遲初始化還是其他原因造成的,但我認為原因實際上是此行:
JSONArray timeline = new JSONArray(data);
由於data
字符串表示一個JSON對象而不是一個數組,因此此操作顯然是不可能的。
在Json中,數組是使用[]
來描述的。 在此定義具有五個屬性的對象。
JSONArray timeline = new JSONArray(data);
// change JSONArray to JSONObject
JSONObject timeline = new JSONObject(data);// Like This
您的JSON數據不是數組。
您的json響應是Object形式的,而不是Array形式的,因此您只需要簡單地解析json對象即可。 假設“ data”是響應中的JSONObject標簽。 以下是解析方式:
HttpEntity e = r.getEntity();
String result = EntityUtils.toString(e);
JSONObject response=new JSOBObject(result);
JSONOBject Data=response.getJSONObject("data");
int a=Data.getInt("a");
int b=Data.getInt("b");
int c=Data.getInt("c");
int d=Data.getInt("d");
int e=Data.getInt("e");
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.