簡體   English   中英

Android:JSONObject無法轉換為JSONArray

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM