0

次のようにデータを生成する Android アプリの php スクリプトからデータを取得しています::

while($row=mysql_fetch_row($res))
{
    if(abs(floor(floatval($row[2]))-$lat)<=10  && abs(floor(floatval($row[3]))-$long)<=10)
    {   $tarray=array("latitude"  => $row[2], "longitude"  => $row[3]);
        $tarray=json_encode($tarray);
        array_push($array,$tarray);
    }}
    sort($array);

$array2=array("START"  => "bins");
    array_push($array2,json_encode($array));
print_r(json_encode($array2));  

そして、私はデータを次のように取得します

{"START":"bins","0":"[\"{\\\"latitude\\\":\\\"25.890765456\\\",\\\"longitude\\\":\\\"69.890456789\\\"}\",\"{\\\"latitude\\\":\\\"28.678912345\\\",\\\"longitude\\\":\\\"80.000000000\\\"}\",\"{\\\"latitude\\\":\\\"28.678922345\\\",\\\"longitude\\\":\\\"80.000000000\\\"}\",\"{\\\"latitude\\\":\\\"28.903123233\\\",\\\"longitude\\\":\\\"76.434343444\\\"}\",\"{\\\"latitude\\\":\\\"30.708923454\\\",\\\"longitude\\\":\\\"78.690002312\\\"}\",\"{\\\"latitude\\\":\\\"32.908923454\\\",\\\"longitude\\\":\\\"79.890002312\\\"}\"]"}

次のように読んでみてください。

JSONObject j=null,j2;
            try{
             j=new JSONObject(responseBody);//responsebody is a string.

            }
            catch(Exception r)
            {r.printStackTrace();


            }
            String s1,s2;
        JSONObject ja,jb;
        try{
            ja=j.getJSONObject("0");
             jb=j.getJSONObject("1");

            s1=ja.getString("0");
            s2=ja.getString("1");
            result=s1 + "|" + s2;
            s1=jb.getString("0");
            s2=jb.getString("1");


        }

しかし、JSONException.Iはデータをlat1 | long1 | lat2 | long2など(パイプで区切られたもの)にしたい. 個々の緯度/経度を読み取るにはどうすればよいですか.??

4

1 に答える 1

0

文字列には配列型の要素0しかなく、 1がないためです..代わりにこれを試してください。

if(j.has("0")){
ja=j.getJSONObject("0");
}
if(j.has("1")){
             jb=j.getJSONObject("1");
}
// similarly for others...

            s1=ja.getString("0");
            s2=ja.getString("1");
            result=s1 + "|" + s2;
            s1=jb.getString("0");
            s2=jb.getString("1");
于 2012-04-23T10:01:37.997 に答える