0

在我的 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 中调用了这个 URL 。HttpGetjson 数据的输出打印到堆栈跟踪并为我提供“无法从对象转换为数组”错误。

查看 PHP 文件和 json 输出,我的代码或输出有什么明显错误吗?我想不通。

4

2 回答 2

3

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

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

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

//  get scores JSONArray from json
JSONArray jsonscoresarray=json.getJSONArray("scores");
...
于 2013-05-07T08:45:29.633 回答
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);
            }
        }
于 2013-05-07T09:24:04.583 回答