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。我想要数据为 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 回答