2

AsynTask取得しjsonて解析しようとしていますが、次のエラーが発生します。

03-21 11:38:07.033: E/AndroidRuntime(8439): FATAL EXCEPTION: main
03-21 11:38:07.033: E/AndroidRuntime(8439): java.lang.NullPointerException
03-21 11:38:07.033: E/AndroidRuntime(8439):     at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at org.json.JSONTokener.nextValue(JSONTokener.java:94)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at org.json.JSONObject.<init>(JSONObject.java:154)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at org.json.JSONObject.<init>(JSONObject.java:171)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at Dic.proj.pkg.notifService.parse_if_update(notifService.java:191)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at Dic.proj.pkg.notifService$1$1$1.onPostExecute(notifService.java:153)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at Dic.proj.pkg.notifService$1$1$1.onPostExecute(notifService.java:1)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at android.os.AsyncTask.finish(AsyncTask.java:631)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at android.os.Looper.loop(Looper.java:137)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at android.app.ActivityThread.main(ActivityThread.java:4921)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at java.lang.reflect.Method.invokeNative(Native Method)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at java.lang.reflect.Method.invoke(Method.java:511)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
03-21 11:38:07.033: E/AndroidRuntime(8439):     at dalvik.system.NativeStart.main(Native Method)

これが私のparse_if_update機能です:

public static String parse_if_update(String jsonResponse) {
    String update="no";

    try {
        JSONObject json = new JSONObject(jsonResponse);
        update = json.getString("update");
    } catch (JSONException e) {
        e.printStackTrace();
    }

    if(update == null){
        update="no";
    }
    return update;
}

どうしたの?私はこの問題を解決するために2日間を費やします。時々null値に遭遇しますが、それらをどのように扱うかわかりません。

4

3 に答える 3

2

nullテストとは異なる単純なものを追加します。

public static String parse_if_update(String jsonResponse) {
String update="no";

    if (jsonResponse != null) {    
        try {
                JSONObject json = new JSONObject(jsonResponse);
                if (json != null) { 
                    update = json.getString("update");
                }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        if(update == null){
            update="no";
        }
    }
    return update;
}

それでも問題はありますか?

于 2013-03-21T08:21:41.767 に答える
1

以下のコードが機能します:

 public static String parse_if_update(String jsonResponse) {
        String update="no";

        try {
                JSONObject json = new JSONObject(jsonResponse);
                if(json!=null)
                   update = json.getString("update");
                else
                   update = "no";
        } catch (JSONException e) {
            e.printStackTrace();
        }

        if(update == null){
            update="no";
        }
        return update;
    }
于 2013-03-21T08:22:12.207 に答える
1

文字列"update"がnullかどうかを確認します。

if (!json.isNull("update")) {
    update = json.getString("update");
}

これをチェックしないと、nullpointerが発生する可能性があります

于 2013-03-21T08:24:46.680 に答える