1

我在 json 代码中有这个数组。

$info=array();
while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
  array_push($info,$row);
}
$info;
$result_final->lugares_cercanos = $info;

打印这个:

{"logstatus":"1","lugares_cercanos":[{"nombre":"Rio Amazonas","distancia":"5119.000"}{"nombre":"Swissotel Quito","distancia":"5823.000"}{"nombre":"Laguna de Yaguarcocha","distancia":"71797.000"}]}

现在,问题是,如何将“lugares_cercanos”的字段放入 java ArrayList?

我尝试使用此代码:

{
  JSONArray jdata=post.getserverdata(postparameters2send, URL_connect);
  if (jdata!=null && jdata.length() > 0){
    JSONObject json_data;
    ArrayList<NameValuePair> lugares = new ArrayList<NameValuePair>();

    json_data = jdata.getJSONObject(0);
    logstatus=json_data.getInt("logstatus");                        
    lugaresCercanos=json_data.getJSONArray("lugares_cercanos");     

    for (int i = 0; i < lugaresCercanos.length(); ++i) {
      JSONObject rec = lugaresCercanos.getJSONObject(i);
      String name = rec.getString("nombre");
      String dist = rec.getString("distancia");
      lugares.add(new BasicNameValuePair(name,dist));
    }
  }
}
4

3 回答 3

1

尝试这个:

JSONObject j = jdata.getJSONObject("obj");
JSONArray jArray = j.getJSONArray("lugares_cercanos");
int len = jArray .length(); 
for(int i=0; i <len; i++){
  String nombre = jArray .getJSONObject(i).optString("nombre");

  ---------
}
于 2013-01-11T06:56:26.747 回答
0

顶层结构(即您发布的 JSON 字符串)不是数组而是对象。

我不知道你的post.getserverdata方法是做什么的,如果有一个可以返回 JSONObject 的版本,你可以使用:

JSONObject jdata=post.getserverdataobject(postparameters2send, URL_connect);
logstatus=jdata.getInt("logstatus");
lugaresCercanos=jdata.getJSONArray("lugares_cercanos");

...
于 2013-01-11T06:56:37.020 回答
0

显示此错误:

解析数据 org.json.JSONException 时出错:值 {"lugares_cercanos":[{"nombre":"Laguna de Yaguarcocha","distancia":"8686205.000"},{"nombre":"Swissotel Quito","distancia": org.json.JSONObject 类型的 "8728811.000"},{"nombre":"Rio Amazonas","distancia":"8729333.000"}],"logstatus":"1"} 无法转换为 JSONArray

于 2013-01-13T07:01:48.540 回答