J'ai un objet JSON pouvant contenir quelques valeurs NULL . J'utilise ObjectMapper de com.fasterxml.jackson.databind pour convertir mon objet JSON en tant que chaîne.
private ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(object);
Si mon objet contient un champ contenant une valeur null, celui-ci n'est pas inclus dans la chaîne provenant de writeValueAsString . Je souhaite que mon ObjectMapper me donne tous les champs de la chaîne, même si leur valeur est null.
Exemple:
object = {"name": "John", "id": 10}
json = {"name": "John", "id": 10}
object = {"name": "John", "id": null}
json = {"name": "John"}
Jackson devrait sérialiser les champs null
en null
par défaut. Voir l'exemple suivant
public class Example {
public static void main(String... args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
String json = mapper.writeValueAsString(new Test());
System.out.println(json);
}
static class Test {
private String help = "something";
private String nope = null;
public String getHelp() {
return help;
}
public void setHelp(String help) {
this.help = help;
}
public String getNope() {
return nope;
}
public void setNope(String nope) {
this.nope = nope;
}
}
}
empreintes
{
"help" : "something",
"nope" : null
}
Vous n'avez rien de spécial à faire.
Include.ALWAYS a travaillé pour moi.
objectMapper.setSerializationInclusion(com.fasterxml.jackson.annotation.JsonInclude.Include.ALWAYS);
Les autres valeurs possibles pour Include sont