Как правильно оформить поле класса в java чтобы при значении null оно не отражалось в json?
Есть класс Errors с такими полями:
public class Errors {
private String name;
private String email;
private String photo;
private String title;
private String text;
private String image;
private String code;
private String password;
private String captcha;
}
как сделать, чтобы поля с null не отображались в json:
{
"result": false,
"errors": {
"name": null,
"email": "Этот e-mail уже зарегистрирован",
"photo": null,
"title": null,
"text": null,
"image": null,
"code": null,
"password": "Пароль короче 6-ти символов",
"captcha": null
}
}
подскажите пожалуйста
Ответы (2 шт):
Автор решения: Alexander Pavlov
→ Ссылка
В общем виде - никак, потому что это зависит от JSON библиотеки.
По умолчанию, в SpringBoot используется Jackson.
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Errors {
...
}
или в application.properties добавить
spring.jackson.serialization-inclusion=non_null
Автор решения: Barmaley
→ Ссылка
Дополню ответ @AlexanderPetrov
Если использовать Google Gson, то по умолчанию поля со значением null не сериализуются:
Errors errors;
//blah-blah
Gson gson = new Gson();
System.out.println("Without NullSerialize:"+gson.toJson(errors));
Наоборот, чтобы сериализовывать с null надо постараться:
GsonBuilder builder = new GsonBuilder();
gson = builder.serializeNulls().create();
System.out.println("With NullSerialize:"+gson.toJson(errors));