2013-05-07 148 views
0

在我的Android應用程序中,我試圖與持有隨機生成的假用戶名和分數的Web服務器進行通信。Android,JSONObject無法轉換爲JSONArray

{ scores: [ 
{ 
un: "Feltricapulta", 
sc: "143" 
}, 
{ 
un: "Henroid", 
sc: "120" 
}, 
{ 
un: "ieteubmospta", 
sc: "70" 
}, 
{ 
un: "pmbotesteuai", 
sc: "67" 
}, 
{ 
un: "epesomiubtat", 
sc: "65" 
} 
] } 

的PHP文件中的代碼看起來是這樣的:

<?php 

    include ('connecttomysql.php'); 


    $command = 'SELECT un, sc FROM xmlscores ORDER BY sc DESC'; 
    $execute_command = mysql_query($command); 

     echo '{ "scores": '; 

    while ($table_row = mysql_fetch_assoc($execute_command)) 
     { 
      $jsonArray [] = $table_row;   
     } 
     echo json_encode($jsonArray); 

     echo '}' 

    ?> 

我打過電話使用通用HttpGet方法在安卓這個.php URL。 json數據的輸出打印到堆棧跟蹤並向我提供「無法從對象轉換爲數組」錯誤。

看着PHP文件和json輸出,是否有任何明顯的錯誤與我的代碼或輸出?我無法弄清楚。

+1

什麼是您的Android代碼?您可能需要.getJSONArray(),您需要.getJSONObject()。 – 2013-05-07 08:44:27

回答

3

「無法轉換從對象到陣列」

意味着你正試圖響應字符串轉換爲JSONArray。但當前字符串包含JSONObject作爲根元素而不是JSONArray。所以它轉換爲JSONObject爲:

JSONObject json=new JSONObject(<Server response string here>); 

// get scores JSONArray from json 
JSONArray jsonscoresarray=json.getJSONArray("scores"); 
... 
+0

這正是我將實體響應字符串傳遞給新的jsonArray的xD問題。非常感謝。 – 2013-05-07 09:07:54

0

//實現JSON數組的應該是這樣的。

@Override 
    public void fromJSON(Object json) throws JSONException { 
     JSONObject jsonObject = new JSONObject((String) json); 

     JSONArray jsonArray = jsonObject.getJSONArray("scores"); 
     mScores = new ArrayList<Score>(); 
     for (int i = 0; i < jsonArray.length(); i++) { 
      JSONObject jsonObjct = (JSONObject)jsonArray.getJSONObject(i); 
      Score object = new Score(); 
      object.fromJSON(jsonObjct); 
      mScores.add(object); 
      } 
     } 
相關問題