web-dev-qa-db-fra.com

Comment vérifier si l'élément JSONArray est null

Je ne peux pas comprendre comment déterminer si un élément qui vit dans un tableau JSON est nul. Pour vérifier si le jsonObject lui-même est null, utilisez simplement:

jsonObject.isNullObject();

Mais lorsque l'objet est un tableau et que je veux vérifier si l'un des éléments de ce tableau est null, cela ne fonctionne pas:

jsonArray.get(i).get("valueThatIsNull") == null;

Il n'y a pas non plus de méthode isNull disponible sur les éléments d'un tableau. Comment vérifier si les valeurs à l'intérieur d'un jsonarray sont nulles? Il peut être utile de savoir que je suis en train de passer un objet null à javascript. Peut-être que null ne veut pas dire la même chose en Java quand il est passé de javascript au format json, mais j'ai aussi essayé de mettre des parenthèses autour du null et cela ne fonctionne toujours pas.

Je publie du code source réel pour aider à rendre cela plus clair. JsonObject fait partie de jsonArray et l'objet a plusieurs valeurs car il est lui-même un objet.

JSONObject mapItem = jsonArray.getJSONObject(i);
int id = mapItem.has("id") ? mapItem.getInt("id") : -1;
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Java.util.Date date = null;
Date sqlDate = null;
if(mapItem.has("date")) {
    String dateStr = mapItem.getString("date");
    if(!dateStr.equals("null")) {
    date = dateFormat.parse(mapItem.getString("date").substring(0, 10)); //Convert javascript date string to Java.
    sqlDate = new Date(date.getTime());
}
10
ryandlf

Je suppose que json transmet les valeurs NULL sous forme de chaînes, vous ne pouvez donc pas vérifier NULL en tant qu'élément Java. Traitez plutôt la valeur NULL comme une chaîne, comme suit:

if(!mapItem.getString("date").equals("null")) {
    //Value is not null
}

J'ai mis à jour l'extrait de code de la question d'origine en une version opérationnelle.

14
ryandlf

Essayez .isNull():

Pour votre exemple:

if(!mapItem.isNull("date")) {
    //Value is not null
}

Cependant, pour répondre au titre de cette question, "comment savoir si un élément JSONArray est null", utilisez .equals()

Donc, pour vérifier si l'index 1 est nul:

if (!jsonArray.get(1).equals(null)) {
    //jsonArray[1] is not null
}
16
Peter Ajtai

essayez la méthode de JSONArray

public boolean isNull (int index)

En fait, il utilise une chaîne "null" comparée au contenu

JSONObject.NULL.equals(this.opt(index));
0
mianlaoshu