2011-06-30 59 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

感谢您的建议,但事实并非如此。我用答案更新了原始帖子。 –