0

ここに私の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));

値なしのようにエミュレーターで null を表示する

- 編集 -

コードの解析に何か間違いがあると思います。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"]}
4

3 に答える 3

1

これは不正なJSON です。キーに二重引用符はありません。

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

代わりに:

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

編集:

わかりました、その手作りのアプローチを削除します:

$data = json_encode(array("titikPeta"=>$titikPetaInti));
于 2012-06-13T01:27:46.527 に答える
0

試す

$data = "{\"titikPeta\":".json_encode($titikPetaInti)."}";
于 2012-06-13T01:50:20.693 に答える
0

OK、私はあなたのバグを見つけました! 問題を修正するだけでなく$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}
于 2012-06-13T04:28:27.573 に答える