从jsonobject获取数据

时间:2012-04-23 09:57:15

标签: php android json

我从一个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等等(由管道分隔)。我如何阅读单个lat / longs。??

1 个答案:

答案 0 :(得分:0)

因为你的字符串只有 0 元素,它的类型为array,而且没有 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");