2013-05-07 79 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); 
      } 
     } 
相关问题