android - Android 中 AsyncTask 内的 JSONException

标签 android json android-asynctask

这是我的异步任务。在 doInbackground 方法中获取 JSONException。

 try {
    Log.v("thisurl", url);
    JSONArray data_holder = new JSONArray();
    JSONParser jParser = new JSONParser();
    // getting JSON string from URL
    JSONObject json = jParser.getJSONFromUrl(url);
            data_holder = json.getJSONArray(data_val);
    for (int i = 0; i < data_holder.length(); i++) {
        HashMap<String, String> data_map = new HashMap<String, String>();
        JSONObject obj = data_holder.getJSONObject(i);
             }
      }

捕获异常。但我无法从中找到原因。当我手动检查时,URL 正确获取了 json 响应。这是我的堆栈跟踪。

 W/System.err(3353): org.json.JSONException: No value for searchresult
 W/System.err(3353):    at org.json.JSONObject.get(JSONObject.java:354)
 W/System.err(3353):    at org.json.JSONObject.getJSONArray(JSONObject.java:544)
 W/System.err(3353):    at com.store.SearchResultActivity$getJsonProductData.doInBackground(SearchResultActivity.java:318)
 W/System.err(3353):    at com.store.SearchResultActivity$getJsonProductData.doInBackground(SearchResultActivity.java:1)
 W/System.err(3353):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
 W/System.err(3353):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
 W/System.err(3353):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
 W/System.err(3353):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
 W/System.err(3353):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
 W/System.err(3353):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
 W/System.err(3353):    at java.lang.Thread.run(Thread.java:856)
 D/AndroidRuntime(3353): Shutting down VM
 W/dalvikvm(3353): threadid=1: thread exiting with uncaught exception (group=0x40ccb300)

有人能指出我在这里做错了什么吗?

最佳答案

线上有错误

 data_holder = json.getJSONArray(data_val);

这是因为,不存在带有键 data_val 的 jsonarray。检查响应和 data_val 的值。如果这些匹配正确,或者不匹配,也只是为了注释,键值区分大小写。

关于android - Android 中 AsyncTask 内的 JSONException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12852599/

相关文章:

java - JSONObject.toString() 正在创建 OutOfMemoryError

Android:使用 asynctask/threads 尽可能快地读取多个 rss 提要

java - 如何在后台堆栈中使用嵌入 fragment 的 Activity 之间保存应用程序状态?

android - 调试应用程序时在 Android Studio 中设置 GPS 位置

android - 从网址下载PDF并阅读

java - Android Studio 3.0.1(错误 :The 'java' plugin has been applied, 但与 Android 插件不兼容。)

android - 为不同的方向使用不同的布局时,在方向更改时保存 fragment 状态

javascript - 在 JS/C#/MVC4 中将 json 转换为 csv 文件并填充 AccessDB

javascript - 无法读取未定义的 Angular JS 的属性 'push'

java - Android 应用程序随机崩溃(java.lang.NoClassDefFoundError)