2011-06-30 84 views
0

我目前正在開發一個1.6版的android應用程序,它解析從服務器接收到的json文件,然後在列表視圖中顯示結果。到目前爲止,我的所有測試版測試人員除了擁有在Android 2.2上運行的HTC G2之外,沒有任何問題。他說他沒有看到他的listview中的任何內容,這讓我認爲json的檢索或解析存在一些問題。他還表示,他在運行應用程序時沒有任何互聯網問題。即使我的「刷新」選項也不能解決他的問題。我想知道是否有什麼特別的G2會導致這個問題。這裏是我處理JSON的代碼。G2和json解析

首先我使用OAuth的客戶端來獲取文件

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(); 

我也顯示舉杯,如果有一個與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信息成爲一個問題一個數據庫:

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的信息。我認爲唯一的問題會造成這個缺點,但我認爲用戶的手機不能存儲幾kb的json文本。我已經完成了他的帳戶的管理員登錄,並且在我用於測試的手機上工作正常。

編輯:

我曾問一個logcat的用戶,似乎從這個錯誤的問題源於:

org.json.JSONException: Value other of type java.lang.String cannot be converted to JSONArray 

這發生在這條線,其中PARAMS [0]從結果服務器:

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

這可能與處理文本文件的某些手機有所不同嗎?看來,結果沒有被檢測爲JSON文件

+0

你需要讓自己成爲G2並嘗試一下。如果沒有設備和調試,你會在頭腦中繼續拍攝你自己的東西,因此可能會出現很多錯誤。 –

+0

我在想這可能是找出答案的唯一方法。感謝您的迴應。 –

+0

獲得logcat後,我認爲它不僅與G2特別有關,而且似乎是硬件問題。 –

回答

0

我發現這個問題。事實證明,這個人的G2上的httpclient提供了一個在application/json中沒有空格的內容類型;字符集= UTF-8。我通過檢查「application/json」而不是'application/json;字符集= UTF-8' 。

0

嘗試更換此:

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

與此:

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

感謝您的建議,但事實並非如此。我用答案更新了原始帖子。 –