2012-02-17 125 views
0

我得到一個NullPointerException becauase此logcat的消息:奇怪的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

「結果」是什麼樣的。是否有可能找回一個JSON對象而不是隻有一個元素的JSON數組? – 2012-02-17 19:20:10

+1

由於日誌中有消息,你沒有得到例外,因爲你使用了錯誤的字符集;)請參閱SLaks回答低於 – 2012-02-17 19:20:24

回答

3

這是一個UTF8 BOM
您需要將流讀取爲UTF8,而不是ISO-8859-1。

+0

你真棒!我的其他php文件在ISO-8859-1下正常讀取,而且這個文件在我切換網絡主機之前也做得很好。你知道是什麼導致了它打破? – 2012-02-17 19:24:07

+0

東西被保存爲UTF8。 – SLaks 2012-02-17 19:25:28