0

JSON を使用すると、以下の例外が発生します。

06-21 18:59:43.418: W/System.err(682): org.json.JSONException: Value null at PunchTime of type org.json.JSONObject$1 cannot be converted to JSONObject
06-21 18:59:43.428: W/System.err(682):  at org.json.JSON.typeMismatch(JSON.java:96)
06-21 18:59:43.428: W/System.err(682):  at org.json.JSONObject.getJSONObject(JSONObject.java:573)
06-21 18:59:43.428: W/System.err(682):  at com.android.epay.TestClass1.getEmployeeList(TestClass1.java:281)
06-21 18:59:43.428: W/System.err(682):  at com.android.epay.TestClass1$GroupPunch_task.doInBackground(TestClass1.java:214)
06-21 18:59:43.438: W/System.err(682):  at com.android.epay.TestClass1$GroupPunch_task.doInBackground(TestClass1.java:1)
06-21 18:59:43.438: W/System.err(682):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
06-21 18:59:43.438: W/System.err(682):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-21 18:59:43.438: W/System.err(682):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-21 18:59:43.438: W/System.err(682):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
06-21 18:59:43.448: W/System.err(682):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
06-21 18:59:43.448: W/System.err(682):  at java.lang.Thread.run(Thread.java:1096)

私のコードは..

j_obj = new JSONObject(responseBody);
JSONArray sites = j_obj.getJSONArray("details");
String date_new = null;
for (int i = 0; i < sites.length(); i++) {
    JSONObject list_obj = sites.getJSONObject(i);
    JSONObject type = list_obj.getJSONObject("****");
    JSONObject time = type.getJSONObject("@@@@@");
    String name = list_obj.getString("#####");
    String id = list_obj.getString("id");
    String _no = list_obj.getString("num");
    String type = type.getString("type");


    if (punchtime == null || punchtime.equals("")) {
        date_new = "Null Values";

    } else {

        year = time.getString("Year");
        month = time.getString("Month");
        day = time.getString("Day");
        hours = time.getString("Hours");
        minutes = time.getString("Minutes");
        seconds = time.getString("Seconds");
        millisec = time.getString("Milliseconds");
        date_new = month + "-" + day + "-" + year + " " + hours + ":" + minutes + ":" + seconds + ":" + millisec;
        System.out.println("New Date " + date_new);
    }

    _arrayList.add(id);
    arryList.add(name);
    _arrayList.add(_no);
    punchType_arrayList.add(type);
    punchTime_arrayList.add(date_new);

}


System.out.println("----------------------------------------");

} finally {
    httpclient.getConnectionManager().shutdown();
}
} 

なぜこのエラーが発生するのですか? if else を使用しましたが、まだ同じ問題が発生しています。非常に多くのサイトを検索しましたが、答えが得られませんでした。助けてください ...

4

1 に答える 1

0

ここでいくつかのこと:

 if (punchtime == null || punchtime.equals("")) {
    date_new = "Null Values";
    punchtime.getString(date_new);
 }

この if 文の最初の条件が満たされた場合、ここで何が起こると思いますか? ヌルになります。null のオブジェクトでメソッドを呼び出すと、NullPointerException が発生します。

次に、解析しようとしている JSON 文字列を投稿できますか? JSON 文字列にエラーがある可能性があります。

于 2012-06-21T14:15:18.073 に答える