Donc, j'obtiens des valeurs JSON du serveur mais je ne sais pas s'il y aura un champ particulier ou non.
Alors comme:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
}
Et parfois, il y aura un champ supplémentaire comme:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited",
"club":"somevalue"
}
Je voudrais vérifier si le champ nommé "club" existe afin qu'à l'analyse, je n'obtienne pas org.json.JSONException: Aucune valeur pour club
Réponses:
La classe JSONObject a une méthode nommée "has":
http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)
la source
Integer
type?Integer
comme clé sonne comme une mauvaise pratique. JSON doit être avec une clé String et une valeur de tout ce dont vous avez besoin.Vous pouvez vérifier de cette façon où 'HAS' - Renvoie true si cet objet a un mappage pour le nom. Le mappage peut être NULL.
la source
vous pouvez
JSONObject#has
, en fournissantkey
comme entrée et vérifier si la méthode retournetrue
oufalse
. Tu pourrais aussiutiliser à la
optString
place degetString
:la source
getString
aurait renvoyé une chaîne vide,optString
renvoie également une chaîne vide. L'hypothèse vous ferait alors croire que la propriété n'est pas disponible dans la situation d'OP.juste avant de lire la clé, vérifiez-la comme avant de lire
Définition de la fonction isNull
documentation officielle ci-dessous lien pour la
isNull
fonctionhttp://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)
la source
Vous pouvez utiliser
has
Déterminez si le JSONObject contient une clé spécifique .
Exemple
la source
Essaye ça
la source
isNull
est en fait pour vérifier si le mappage est nul, pas pour vérifier la disponibilité d'un membre json.Une meilleure façon, au lieu d'utiliser un conditionnel comme:
consiste simplement à utiliser la méthode existante optString (), comme ceci:
la méthode optString ("key") renverra une chaîne vide si la clé n'existe pas et ne vous lèvera donc pas d'exception.
la source
Json a une méthode appelée
containsKey()
.Vous pouvez l'utiliser pour vérifier si une certaine clé est contenue dans l'ensemble Json.
la source
fonctionne dans tous les navigateurs actuels.
la source
Essaye ça:
la source
Vous pouvez essayer ceci pour vérifier si la clé existe ou non:
la source
J'ajoute juste une autre chose, au cas où vous voudriez juste vérifier si quelque chose est créé dans JSONObject ou non, vous pouvez utiliser length (), car par défaut, lorsque JSONObject est initialisé et qu'aucune clé n'est insérée, il a juste des accolades vides
{}
et en utilisant a (String key) n'a aucun sens.Ainsi, vous pouvez directement écrire
if (jsonObject.length() > 0)
et faire vos affaires.Bon apprentissage!
la source
Vous pouvez utiliser le JsonNode # hasNonNull (String fieldName) , il mélange la méthode has et la vérification s'il s'agit d'une valeur nulle ou non
la source