2011-06-30 12 views
0

私は現在、サーバーから受信したjsonファイルを解析して結果をlistviewに表示するアンドロイドアプリ1.6を開発中です。これまでのところ、私のベータテスターのすべては、Android 2.2で動作するHTC G2を所有している人以外は何の問題もありませんでした。彼はリストビューで何も見ないと言って、jsonの検索や解析に問題があると思っていました。彼はまた、アプリケーションを実行している間、彼はインターネット上の問題がないと言いました。私の "リフレッシュ"オプションでさえ彼の問題は解決しません。これを引き起こすG2に関して特に異なるものがあるかどうか疑問に思っています。ここで私がJSONを扱うコードを示します。G2とjsonのパース

まず、私はまた、問題が

 if (result instanceof Exception) { 
     // If failed during refreshing vouchers, show message to user 
     if (USER_REFRESH.equals(flag) || SYSTEM_REFRESH.equals(flag)) { 
      ((ListVouchers)context).getProgressDialog().cancel(); 
      Toast.makeText(context, "Could not load. Try again later.", Toast.LENGTH_LONG).show(); 
     } 

をフェッチJSONであった場合、その後、私はJSONへの情報を保存トーストを表示するファイル

OAuthMessage request = accessor.newRequestMessage(method, url, parameters); 
response = client.invoke(request, OAuthClient.ParameterStyle.BODY); 
if (("application/json; charset=utf-8").equals(response.getBodyType())) { 
       return response.readBodyAsString(); 

を取得するためにはOAuthクライアントを使用データベース:

JSONArray jArray = new JSONArray(params[0]); 
      int jarrayLength = jArray.length(); 
      //Create a set of the ids in the json 
      for (int i = 0; i < jarrayLength; i++) { 
       JSONObject jsonObj = jArray.getJSONObject(i); 
      JSONObject categoryObj = jsonObj.getJSONObject("category"); 
        values.put("categoryName", categoryObj.getString("name")); 
        values.put("categoryId", categoryObj.getString("id")); } 
         contentResolver.insert(CONTENT_URI, values); 

特にG2が特にそうでないと思われる人はいますか?これは正しく行いますか?ユーザーはクラッシュを報告していません.Jsonの情報であるはずの空のビューが表示されます。私はこれが原因だろうと思う唯一の問題は、スペースの不足ですが、私はユーザーの電話が数キロバイトのjsonテキストを保存できないとは思わない。私は自分のアカウントの管理者ログインを行っており、テストに使用する電話機で正常に動作します。

編集:

私はlogcatをユーザーに求めている、問題がこのエラーから茎ようだ:

のparams [0]からの結果であり、このライン上で起こる
org.json.JSONException: Value other of type java.lang.String cannot be converted to JSONArray 

サーバー:

JSONArray jArray = new JSONArray(params[0]); 

これは、テキストファイルを扱う特定の電話機とは関係がありますか?私は問題を発見

JSONObject jsonData = new JSONObject(params[0]); 
JSONArray nameArray = jsonData.names(); 
JSONArray jArray = json.toJSONArray(nameArray); 
+0

自分でG2を入手して試してみる必要があります。デバイスやデバッグがなければ、頭がおかしくなってしまいます。 –

+0

私はそれがおそらく唯一の発見方法だと考えていました。応答していただきありがとうございます。 –

+0

logcatを入手した後、特にG2だけではないと思っていますが、ハードウェアに問題があるようです。 –

答えて

0

:これで

JSONArray jArray = new JSONArray(params[0]); 

:これを交換してみてください

0

結果はJSONファイルとして検出されていないようです。人のG2上のhttpclientがapplication/json内にスペースを持たないcontent-typeを与えていたことが判明しました。 charset = UTF-8。私はこの問題を 'application/json'の代わりに 'application/json'をチェックすることで解決しました。 charset = UTF-8 '。

+0

提案に感謝しますが、そうではありませんでした。元の投稿をその答えで更新しました。 –

関連する問題