Jackson JSON générateur crée null JSON valeurs pour les objets manquants
J'ai commencé à utiliser Jackson comme un JSON générateur, comme une alternative à google GSON. J'ai couru dans un problème où Jackson est la génération de l'objet: la valeur null si l'objet est en effet la valeur null. GSON d'autre part génère PAS d'entrée en JSON, ce qui est le comportement que je veux. Est-il un moyen d'arrêter de Jackson à partir de la génération d'objet null/valeur lorsqu'un objet est manquant?
Jackson
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
mapper.writeValue(sw, some_complex_object);
String jackson = sw.getBuffer().toString();
System.out.println("********************* START JACKSON JSON ****************************");
System.out.println(jackson);
System.out.println("********************* END JACKSON JSON ****************************");
génère cette:
{"eatwithrustyspoon":{"urlList":null,"périphérique":"iPad","os":"iPhone OS","peer_id":
et GSON ressemble à ceci:
Gson gson = new Gson();
String json = gson.toJson(some_complex_object);
System.out.println("********************* START GSON JSON ****************************");
System.out.println(json);
System.out.println("********************* END GSON JSON ****************************");
et il génère des ce (qui est ce que je veux - note que "urlList":null n'a pas été générée) :
{"eatwithrustyspoon":{"périphérique":"iPad","os":"iPhone OS","peer_id"
OriginalL'auteur geekyaleks | 2013-02-13
Vous devez vous connecter pour publier un commentaire.
De la Jackson FAQ:
Puis-je omettre l'écriture de propriétés du Bean avec la valeur null? ("comment empêcher l'écriture de nulle propriétés", "comment supprimer les valeurs nulles")
Oui. Comme par JacksonAnnotationSerializeNulls, vous pouvez utiliser:
et le tour est joué, plus de valeurs null. Notez que vous DEVEZ configurer mappeur avant de haricots sont sérialisés, depuis ce paramètre peut être mis en cache avec sérialiseurs. Donc si ce réglage est-il trop tard peut empêcher le changement de prise d'effet.
Gah, désolé - un lien qui était censé être là (édité), bien que l'un de ceux qui devraient avoir travaillé (vous ne devriez pas avoir à annoter vos objets Pojo).
Cela a contribué pour moi à un mondial ObjectMapper niveau. Si j'avais besoin de configurer à un bean/classe ou d'un champ/niveau de la propriété, à l'aide de la JsonInclude semble être le chemin à parcourir.
OriginalL'auteur Brian Roach
mon problème était un peu différent en fait, je recevais des valeurs Null pour les propriétés de la classe POJO.
cependant, j'ai résolu le problème en donnant la cartographie de propriétés dans ma classe pojo comme ceci :
@JsonProperty("PROPERTY_NAME")
pense qu'il peut aider quelqu'un 🙂
OriginalL'auteur Prateek S
La solution suivante qui m'a sauvé.
OriginalL'auteur Ghost Rider