2012-02-17 5 views
0

Я получаю NullPointerException becauase этого LogCat сообщения:Weird JSON синтаксического анализа ошибок Android

02-17 13:01:10.766: W/System.err(950): org.json.JSONException: Value  of type java.lang.String cannot be converted to JSONArray 
02-17 13:01:10.775: W/System.err(950): at org.json.JSON.typeMismatch(JSON.java:111) 

Это то, что моя JSON выводит:

[{"rated":"1","user_id":""}] 

А вот как я его вызова:

try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is2,"iso-8859-1"),8); 
      sb2 = new StringBuilder(); 
      sb2.append(reader.readLine() + "\n"); 

      String line="0"; 
      while ((line = reader.readLine()) != null) { 
       sb2.append(line + "\n"); 
      } 
      is2.close(); 
      resulttt=sb2.toString(); 
     }catch(Exception e){ 
      Log.e("log_tag", "Error converting result "+e.toString()); 
     } 

     try{ 
      jArray2 = new JSONArray(resulttt); 
      JSONObject json_data=null; 

      rateresult = new int[jArray2.length()]; 
      rateuser = new String[jArray2.length()]; 

      for(int i=0;i<jArray2.length();i++){ 
       json_data = jArray2.getJSONObject(i); 
       rateresult[i]=json_data.getInt("rated"); 
       rateuser[i]=json_data.getString("user_id"); 
      } 
     } 

Любая идея, что вызывает это «несоответствие» или странное значение в моем LogCat? Благодарю.

+0

Как выглядит «resulttt». Возможно ли, что вы возвращаете объект JSON вместо массива JSON только с одним элементом? –

+1

Вы не получаете исключение из-за сообщения в журнале, вы получаете его, потому что используете неправильный Charset;) См. Ответ SLaks ниже –

ответ

3

Это UTF8 BOM.
Вам необходимо прочитать поток как UTF8, а не ISO-8859-1.

+0

Вы потрясающий! Мои другие php-файлы отлично смотрятся с ISO-8859-1, и это было сделано еще до того, как я переключил веб-хосты. Знаете ли вы, что заставило его сломаться? –

+0

Что-то было сохранено как UTF8. – SLaks

Смежные вопросы