[英]Android, JSONObject cannot be converted to JSONArray
在我的Android應用中,我試圖與包含隨機生成的假用戶名和分數的Web服務器進行通信。
{ 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 '}'
?>
我在Android中使用通用的HttpGet
方法將此.php
URL稱為。 json數據的輸出打印到stacktrace,並向我提供“無法從對象轉換為數組”錯誤。
查看PHP文件和json輸出,我的代碼或輸出是否有明顯的錯誤? 我不知道。
“無法從對象轉換為數組”
表示您正在嘗試將響應字符串轉換為JSONArray
。 但是當前字符串包含JSONObject
作為根元素,而不是JSONArray
。 因此,將其轉換為JSONObject
:
JSONObject json=new JSONObject(<Server response string here>);
// get scores JSONArray from json
JSONArray jsonscoresarray=json.getJSONArray("scores");
...
// 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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.