2

これが私の 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)

ここで私が間違っていることを誰かが指摘できますか?

4

1 に答える 1

2

エラーはオンラインです

 data_holder = json.getJSONArray(data_val);

その理由は、キー data_val を持つ jsonarray が存在しないためです。応答と data_val の値を確認してください。これらが適切に一致しているかどうかにかかわらず、メモの場合でも、キー値は大文字と小文字が区別されます。

于 2012-10-12T05:13:06.583 に答える