簡體   English   中英

將json從php解析到android時顯示為空

[英]Null display when parsing json from php to android

這是我的PHP代碼

$titikPetaInti = array();
while($row = mysql_fetch_assoc($hasil2))
{
     $titikPetaInti[] = $row['koordinat'];
}

$data = "{titikPeta:".json_encode($titikPetaInti)."}";
echo $data;
?>

然后這是我的android代碼xResultTitikPeta是對php的結果請求

jObject = new JSONObject(xResultTitikPeta);
        JSONArray myArray1 = (JSONArray) jObject.getJSONArray("titikPeta");
        String[]titikPeta = new String[myArray1.length()];

        for(int a = 0; a < myArray1.length(); a++)
        {
            titikPeta[a] = myArray1.getJSONObject(a).toString();
        }
        teks1 = (TextView) findViewById(R.id.textView1);
        teks1.setText(Arrays.toString(titikPeta));

它在模擬器上顯示空值,就像沒有值一樣

- 編輯 -

我認為解析代碼時出現錯誤,因為我在android中顯示xResultTitikPeta時,它給了我字符串結果

這是xResultTitikPeta的結果

{titikPeta:["-8.705378,115.225189","-8.56056700000000,115.42395100000","-8.57659700000000,115.40065300000","-8.55596300000000,115.41085700000","-8.51855200000000,115.491908000000","-8.54743200000000,115.41036800000","-8.56551100000000,115.45173900000","-8.44321000000000,115.616019000000"]}

這是格式錯誤的 JSON! 鍵上沒有雙引號。

$data = "{titikPeta:".json_encode($titikPetaInti)."}";

而是:

$data = '{"titikPeta":'.json_encode($titikPetaInti).'}';

編輯:

好的,刪除該手工方法:

$data = json_encode(array("titikPeta"=>$titikPetaInti));

嘗試

$data = "{\"titikPeta\":".json_encode($titikPetaInti)."}";

好的,我發現了您的錯誤! 以及修復$data = json_encode(array("titikPeta" => $titikPetaInti)); 問題,問題在這里:

titikPeta[a] = myArray1.getJSONObject(a).toString();

myArray1的元素實際上是string類型,會引發異常,因此您需要:

titikPeta[a] = myArray1.getString(a);

這將產生以下輸出:

[-8.705378,115.225189, -8.56056700000000,115.42395100000, -8.57659700000000,115.40065300000, -8.55596300000000,115.41085700000, -8.51855200000000,115.491908000000, -8.54743200000000,115.41036800000, -8.56551100000000,115.45173900000, -8.44321000000000,115.616019000000]

由於數組中的每個元素的格式"-8.705378,115.225189" ,因此JSON解析器假定它們是字符串。 如果將元素更改為"-8.705378","115.225189" ,則還可以使用:

titikPeta[a] = Double.toString(myArray1.getDouble(a));

但是,第一個版本也可以使用。

注意:我個人的喜好是我將每個數組元素聲明為:

{"x":-8.705378,"y":115.225189}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM