2012-10-12 114 views
2

這是我的AsyncTask。在doInbackground方法中獲取JSONException。Android中的AsyncTask中的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) 

任何人都可以指出我在這裏做錯了什麼嗎?

+0

打印json響應並找出你自己:) –

回答

2

錯誤是在線

data_holder = json.getJSONArray(data_val); 

及其原因,沒有jsonarray與關鍵data_val存在。檢查響應和data_val的值。如果這些匹配正確或者不匹配,也只是爲了便箋,則鍵值區分大小寫。

+0

這是一個大小寫敏感的問題。 – intrepidkarthi