我从一个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。??
答案 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");