Как правильно оформить поле класса в 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));
→ Ссылка