Android,JSONObject无法转换为JSONArray

时间:2013-05-07 08:42:12

标签: php android mysql json

在我的Android应用中,我正在尝试与包含随机生成的虚假用户名和分数的网络服务器进行通信。

{ 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 '}'

    ?>

我使用通用.php方法在Android中调用了此HttpGet网址。 json数据的输出打印到堆栈跟踪,并为我提供“无法从对象转换为数组”错误。

查看PHP文件和json输出,我的代码或输出有什么明显错误吗?我无法理解。

2 个答案:

答案 0 :(得分:3)

  

“无法从对象转换为数组”

表示您正在尝试将响应字符串转换为JSONArray。但是当前字符串包含JSONObject作为根元素而不是JSONArray。所以将其转换为JSONObject as:

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

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

答案 1 :(得分: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);
            }
        }