2012-02-17 9 views
0

私はこのLogCatメッセージのbecauase NullPointerExceptionが取得していますが:奇妙なJSONのパースエラーアンドロイド

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

そして、ここで私はそれを取得しています方法です:

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を出力しているものです。

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"はどのように見えますか? 1つの要素だけを持つJSON配列の代わりにJSONオブジェクトを返すことは可能でしょうか? –

+1

あなたが間違った文字セットを使用しているため、ログにメッセージがあるために例外が発生していない、あなたがそれを取得している;)下記SLAKsの回答を参照してください。 –

答えて

3

これはUTF8 BOMです。
ストリームをISO-8859-1ではなくUTF8として読み込む必要があります。

+0

あなたは素晴らしいです!私の他のPHPファイルはISO-8859-1でうまく読みましたが、これはあまりにも前にWebホストを切り替えました。何が壊れたのか分かりますか? –

+0

何かがUTF8として保存されました。 – SLaks