我目前正在开发一个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文件
你需要让自己成为G2并尝试一下。如果没有设备和调试,你会在头脑中继续拍摄你自己的东西,因此可能会出现很多错误。 –
我在想这可能是找出答案的唯一方法。感谢您的回应。 –
获得logcat后,我认为它不仅与G2特别有关,而且似乎是硬件问题。 –