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