Как не включать параметры null в ответ от сервера?
Я пишу серверную часть на Java, по принципу Api First, возникла проблема: как не добавлять пустые поля в ответ от сервера.
Вот пример yaml
/external/v1/tariffs:
get:
tags:
- external-tariffs-controller
summary: Получение тарифа по mcc
operationId: getTariffs
parameters:
- name: mcc
in: query
required: true
schema:
type: string
responses:
'200':
description: Тариф успешно получен
content:
application/json:
schema:
type: array
items:
TariffsDto:
type: object
properties:
rate:
type: string
description: Процентная ставка комиссии
minFeeSum:
type: integer
description: Минимальная сумма комиссии
maxFeeSum:
type: integer
description: Максимальная сумма комиссии
required:
- rate
Цель: из
[
{
"rate": "2.7",
"minFeeSum": null,
"maxFeeSum": null
}
]
Получить просто
[
{
"rate": "2.7"
}
]
Удалять массив я не могу, надо чтобы ответ был в массиве, из возможных решений которые я находил - была аннотация @JsonInclude(JsonInclude.Include.NON_NULL) но я такое добавить не могу, потому что класс генерируется автоматически и так же в конфигурацию спринга добавлял такие поля:
jackson:
default-property-inclusion: non_null
serialization:
write-null-map-values: false
write-empty-json-arrays: false
так же не помогло. Помогите пожалуйста))
Ответы (1 шт):
Автор решения: TaranenkoAnt
→ Ссылка
Можно попробовать настроить объект-маппера через Jackson2ObjectMapperBuilderCustomizer:
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JacksonConfig {
@Bean
public Jackson2ObjectMapperBuilderCustomizer customizeObjectMapper() {
return objectMapperBuilder -> {
// Исключаем пустые значения из сериализации
objectMapperBuilder.serializationInclusion(JsonInclude.Include.NON_NULL);
};
}