Android json解析不会产生预期的结果

问题描述:

我已经阅读并尝试了很多关于*的示例,但至今没有运气。我想要做的是解析一个json数组,我从php/mysql中获取用于Android的。我的代码工作多达我可以将JSON转换成它看起来像这样的转换后的字符串点:Android json解析不会产生预期的结果

[{"username":"lawn edge","distance":"0.00766418723166294"},{"username":"bbq","distance":"0.00876051437108357"},{"username":"Tablet","distance":"0.0140815866739065"}] 

我想只提取“用户名”,并将它们发送到一个TextView。我试过的大多数例子只是产生一个空的textview,或者像上面看到的那样,它倾倒了整个json字符串。我已经得到最接近的是使用下面的代码:

private void returnJson() { 
    // TODO Auto-generated method stub 

    try { 

     httpPostproximity = new HttpPost(
       "http://vtolblog.com/finddistance.php"); 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); 

     nameValuePairs.add(new BasicNameValuePair("lat", lat)); 
     nameValuePairs.add(new BasicNameValuePair("lng", lng)); 
     nameValuePairs.add(new BasicNameValuePair("username", check)); 
     httpPostproximity 
       .setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = httpclient.execute(httpPostproximity); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 

    } catch (Exception e) { 
     playerlist.setText("error3"); 
    } 

    try { 

     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\r\n"); 
     } 
     is.close(); 
     result = sb.toString(); 
     result.trim(); 
    } catch (Exception e) { 
     playerlist.setText("error2"); 
    } 
    try { 
     JSONObject json_data = new JSONObject(result); 
     JSONArray jArreglo = new JSONArray(result); 
     for (int i = 0; i < jArreglo.length(); i++) { 
      json_data = jArreglo.getJSONObject(i); 
      Log.i("log_tag", "Player: " + json_data.getString("username")); 
      // Get an output to the screen 
      jsonplayers += "\n\t" + jArreglo.getJSONObject(i); 
     } 

    } catch (JSONException e) { 
     Log.e("log_tag", "Error parsing data " + e.toString()); 
     playerlist.setText("Error parsing json"); 
    } 

    playerlist.setText(jsonplayers); 

    return; 

    // end of returnJson() 
} 

如果我改变playerlist.setText(结果);它会显示上面引用的json数组,所以我假设代码是好的,直到那一点? 我的方式?如果您需要任何其他帮助,请提前通知我,并提前致谢!

我觉得你在网上越来越例外:

JSONObject json_data = new JSONObject(result); 

,因为结果是JSONArray,不JSONObject的,尽量评论这条线。

+0

当我评论说,我结束了一个空白的textview。也许我遇到的全部问题是我一直试图应用寻找json对象的代码,而不是像数组那样对待它? – user1203283 2012-02-11 17:42:33