Ошибка синтаксического анализа JSON (нет ошибки HTTP. Просто преобразование строки) - PullRequest
0 голосов
/ 01 февраля 2012

Так что я погуглил и нашел примеры, похожие на то, что мне нужно.Я подправил и отрегулировал и решил большинство моих проблем, но запутался в этой проблеме, которую, похоже, не могу пройти.Некоторый Backround: Итак, я создаю приложение, которое запрашивает базу данных MySQL через PHP, создавая объект JSON.Я вижу "[{" question ":" Почему небесно-голубой "}]" в моем веб-браузере на SDK, поэтому я знаю, что у меня есть доступ к объекту.В моем манифесте также правильно установлены разрешения.Проблема возникает, когда я пытаюсь разобрать объект в строку.Я получаю сообщение «Ошибка преобразования результата java.lang.NullPointerException» от моего журнала cat.

Теперь я попробовал

//convert response to string
    try{
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        String json = reader.readLine();
        JSONTokener tokener = new JSONTokener(json);
        JSONArray finalResult = new JSONArray(tokener);

          }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
          }

Я также попробовал

try{
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                    sb = new StringBuilder();
                    sb.append(reader.readLine() + "\n");
                    String line="0";
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result=sb.toString();

          }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
          }

Я предполагаю, что я опубликую свой http (даже в собственной ветке лучшие практики)уууу! - но тогда я использую глобальные переменные (facepalm))

    new Thread() {
    public void run() {
          try{
               HttpClient httpclient = new DefaultHttpClient();

                          HttpPost httppost = new HttpPost("http://192.168.1.55/qgrap.php");

                          httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                          HttpResponse response = httpclient.execute(httppost);

               }catch(Exception e){
                   Log.e("log_tag", "Error in http connection"+e.toString());
              } 
    }
    }.start();

В HTTP для второго кодового набора вам нужно сделать что-нибудь для получения содержимого в любом случае, я бы хотел сосредоточиться на первом кодезадавать.Здесь ответ является глобальной переменной.который обрабатывается при передаче в аргументы BufferReader.Если я не ошибаюсь в строке String json = reader.readLine ();У меня должен быть доступ к данным в виде строки.В любом случае журнал говорит, что нет, и я понятия не имею, почему.Также я не могу просто создать строку на стороне php вместо использования JSON?

BOUNTY: тысяча интернет

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Я рекомендую GSON http://code.google.com/p/google-gson/

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

Вы должны связать свой ввод в какой-то цикл, а не предполагать, что он находится на первой строке:

BufferedReader userInfoReader = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuilder builder = new StringBuilder();
while ((line = userInfoReader.readLine()) != null) {
    builder.append(line).append("\n");
}
JSONTokener tokener = new JSONTokener(builder.toString());
JSONArray finalResult = new JSONArray(tokener);
0 голосов
/ 14 февраля 2012

Хорошо, так что я стараюсь изо всех сил, потому что я не хочу использовать gson, я хочу, чтобы мой код работал. У меня есть одна ошибка, которую я не понимаю Ошибка преобразования результата java.lang.NullPointerException boom вот и все.

     try{
    BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
    String json = reader.readLine();
    JSONTokener tokener = new JSONTokener(json);
    JSONArray finalResult = new JSONArray(tokener);

      }catch(Exception e){
            Log.e("log_tag", "Error converting result "+e.toString());
      }

Где-то в этом блоке кода проблема. Я этого не вижу. В любом случае я собираюсь HTML5

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