Разбор Android json не дает ожидаемых результатов - PullRequest
0 голосов
/ 11 февраля 2012

Я прочитал и перепробовал множество примеров работы над стеком, прежде чем спрашивать, но пока не повезло.Я пытаюсь разобрать массив json, который я возвращаю из php / mysql для использования в Android.Мой код работает до такой степени, что я могу преобразовать JSON в строку, которая выглядит после преобразования:

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

Я пытаюсь извлечь только «имя пользователя» и отправить их в текстовое представление,В большинстве примеров, которые я пробовал, просто создается пустое текстовое представление или выводится вся строка 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 (result);он будет отображать вышеупомянутый массив json, так что я предполагаю, что код в порядке до этого момента?Я далеко?Если вам нужно что-то еще, чтобы помочь мне, пожалуйста, дайте мне знать и спасибо заранее!

1 Ответ

0 голосов
/ 11 февраля 2012

Я думаю, вы получаете исключение на линии:

JSONObject json_data = new JSONObject(result);

, поскольку результатом является JSONArray, а не JSONObject, попробуйте комментировать эту строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...