Comment une propriété facultative peut être ignoré lors de l'utilisation de jackson à convertir en objet Java
Je suis en utilisant Jackson 1.9.2(org.codehaus.jackson) au couvent de Java objet JSON correspondant construire. Voici mon objet java:
Class ColorLight {
String type;
boolean isOn;
String value;
public String getType(){
return type;
}
public setType(String type) {
this.type = type;
}
public boolean getIsOn(){
return isOn;
}
public setIsOn(boolean isOn) {
this.isOn = isOn;
}
public String getValue(){
return value;
}
public setValue(String value) {
this.value = value;
}
}
Si je n'ai la suite de la conversion, j'aimerais obtenir le résultat que je souhaite.
ColorLight light = new ColorLight();
light.setType("red");
light.setIsOn("true");
light.setValue("255");
objectMapper mapper = new ObjectMapper();
jsonString = mapper.writeValueAsString();
jsonString serait comme:
{"type":"red","isOn":"true", "value":"255"}
Mais parfois je n'ai pas la valeur de isOn de la propriété
ColorLight light = new ColorLight();
light.setType("red");
light.setValue("255");
Mais la jsonString est toujours comme:
{"type":"red","isOn":"false", "value":"255"}
Où "isOn:false," est la valeur par défaut de Java de type booléen qui je ne veux pas que ce soit là.
Comment puis-je supprimer le isOn de la propriété dans la dernière json construire comme cela?
{"type":"red","value":"255"}
Vous devez vous connecter pour publier un commentaire.
Pour ignorer la valeur si elle n'est pas présente:
Boolean
au lieu de laboolean
primitive (boolean
valeurs sont toujourstrue
oufalse
).@JsonInclude(Include.NON_NULL)
ou@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
, selon la version.Vous pouvez marquer votre classe avec le
@JsonSerialize(include = JsonSerialize.Inclusion.NON_DEFAULT)
en 1.x annotation qui indique que seules les propriétés qui ont des valeurs qui diffèrent des paramètres par défaut (sens des valeurs qu'ils ont quand Bean est construit avec ses arguments constructeur) doivent être inclus.La
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
annotation est utilisée pour la version 2.x.Voici un exemple:
De sortie: