comment obtenir une réelle valeur null au lieu d'un JSONObject.Valeur NULLE lors de l'analyse de JSON dans le graal
Je suis en train d'analyser certains de JSON dans le Grain à l'aide du graal.convertisseurs de.Librairie JSON. J'ai un champ qui contient une chaîne de caractères, ou une valeur null. Quand je parser le JSON et obtenir le champ, les valeurs null revenir comme un JSONObject.De type NULL. Ce n'est pas bon lors de la vérification != null JSONObject.NULL est évaluée comme non-nulle (pas bon pour les nuls contrôles)
def obj = JSON.parse('{"date1":null,"date2":"2011-06-26T05:00:00Z"}')
def date1 = obj.date1
if (date1)
parse(date1) //parse error occurs here because date1 evaluates true in the if because it is JSONObject.NULL
Est-il un moyen facile d'obtenir les analyser pour analyser une réelle valeur nulle, de sorte que je n'ai pas à vérifier si l'objet est un JSONObject.La valeur NULL.
J'ai essayé la suggestion ici à utiliser .toString(), mais il a fini par retourner la chaîne de valeur 'null', au lieu de réelle valeur null pour un JSONObject.Valeur NULL.
c'est un code d'exemple pour illustration, pas à proprement parler un code en cours d'exécution. c'est à des fins d'illustration. J'ai corrigé la citation, mais ce n'est pas le problème, je vais illustrer
OriginalL'auteur Scott | 2011-10-22
Vous devez vous connecter pour publier un commentaire.
Jeter un oeil à: http://grails.1312388.n4.nabble.com/The-groovy-truth-of-JSONObject-Null-td3661040.html
Ian Roberts mentionne un joli truc pour faire un null vérifier possible:
?.
comme il serait naturel avec une "vraie" carte.OriginalL'auteur
Vous pouvez trouver ce plus utile et naturel
Je suis
NullPointerException
lorsque j'utiliseJSONObject.NULL.equals(...)
. Dans le débogueur je vois queJSONObject.NULL = null
....Selon la bibliothèque que vous utilisez, reportez-vous à docs.oracle.com/javaee/7/api/javax/json/JsonValue.html#NULL developer.android.com/reference/org/json/JSONObject.html#NULL
OriginalL'auteur
Je crois que j'ai trouvé une meilleure solution, qui consiste dans la substitution de la
toString()
méthode de la mise en œuvre de laJSONObject.NULL
intérieure en copiant leJSONObject.java
de fichier dans votre Graalsrc/java
projet et la modification de la mise en œuvre de cette:Une fois que vous redémarrez avec cette nouvelle classe dans votre classpath, le chargeur de classe utiliser votre
JSONObject
classe à la place de celui emballés dans des le Graal dépendances.Assurez-vous de le garder dans le même emballage que celui d'origine.
Pour plus de détails, vous pouvez aller ici: https://github.com/grails/grails-core/issues/9129
Espère que cela aide 🙂
OriginalL'auteur