Android Travailler avec une chaîne vide lors de l'analyse syntaxique de json


Exemple

{
    "some_string": null,
    "ather_string": "something"
}

Si nous allons utiliser cette façon:

JSONObject json = new JSONObject(jsonStr);
String someString = json.optString("some_string");

Nous aurons une sortie:

someString = "null";

Nous devons donc fournir cette solution de contournement:

/**
 * According to http://stackoverflow.com/questions/18226288/json-jsonobject-optstring-returns-string-null
 * we need to provide a workaround to opt string from json that can be null.
 * <strong></strong>
 */
public static String optNullableString(JSONObject jsonObject, String key) {
    return optNullableString(jsonObject, key, "");
}

/**
 * According to http://stackoverflow.com/questions/18226288/json-jsonobject-optstring-returns-string-null
 * we need to provide a workaround to opt string from json that can be null.
 * <strong></strong>
 */
public static String optNullableString(JSONObject jsonObject, String key, String fallback) {
    if (jsonObject.isNull(key)) {
        return fallback;
    } else {
        return jsonObject.optString(key, fallback);
    }
}

Et puis appelez:

JSONObject json = new JSONObject(jsonStr);
String someString = optNullableString(json, "some_string");
String someString2 = optNullableString(json, "some_string", "");

Et nous aurons la sortie comme prévu:

someString = null; //not "null"
someString2 = "";