Показать нулевые атрибуты json response spring data rest?

Представьте, что у меня есть такая сущность.

public class Person{
  Long Id,
  String name,
  String city,
  Long age

  //getters, setters, constructor
}

Когда я создаю репозиторий и выводю с помощью запроса GET для записи для города значение null, ниже мой ответ json.

{
  "name": "jon",
  "age": 34
}

Но вместо этого я хочу это.

{
  "name": "jon",
  "city": null,
  "age": 34
}

т.е. показывать нулевые атрибуты.

Какую работу можно обойти проще всего?

это странно. В любом случае вы должны иметь возможность настроить ObjectMapper, правильно установив свойство serializationInclusion

Angelo Immediata 19.07.2018 13:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
1 058
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я думаю, вам следует проверить аннотацию json JsonInclude.Include и установить ее ВСЕГДА: https://fasterxml.github.io/jackson-annotations/javadoc/2.0.0/com/fasterxml/jackson/annotation/JsonInclude.Include.html

Убедитесь, что вы нет следующей конфигурации в вашем ObjectMapper:

mapper.setSerializationInclusion(Include.NON_NULL);

Если он у вас есть, удалите его или измените на Include.ALWAYS.


Также проверьте свой application.properties. Если вы используете Spring Boot 1.3, включение сериализации настраивается через свойство spring.jackson.serialization-inclusion.

Jackson 2.7 и Spring Boot 1.4 используют свойство spring.jackson.default-property-inclusion.

Убедитесь, что значение таких свойств - non_null.


Альтернативно, аннотируйте свой класс следующим образом:

@JsonInclude(Include.ALWAYS)
public class Person {
    ...
}

Другие вопросы по теме