2012-04-23 37 views
0

我從PHP腳本中獲取數據的Android應用程序,其如下::從JSONObject的

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等(由管道分隔).Ho我是否讀過個別經緯度?

回答

0

它,因爲你的字符串只有元素這類型的數組,它簡化版,有 ..嘗試這個代替。

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"); 
+0

ha !!愚蠢的高度。雖然代碼有更多的問題,但我已經修復它們。 :) – Sankalp 2012-04-23 11:40:12

+0

@Sankalp ..祝你好運... – ngesh 2012-04-23 11:50:51