Сериализация пустого ArrayList в json в виде []

Использую com.fasterxml.jackson.datatype

При сериализации коллекции с одним объектом получаю

return Collections.singletonList(new Offer());

"offers": [
        {}
    ]

мне нужно чтобы вернулось

"offers": []

не получается добиться такого вывода. Если просто пустой список вернуть, то запись пропадает.


Ответы (1 шт):

Автор решения: pra_soul_owl

решение юзать JsonSerializer

public class CustomMyObjectSerializer extends JsonSerializer<MyObject> {
    @Override
    public void serialize(MyObjectvalue, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
        jgen.writeStartObject();
        jgen.writeArrayFieldStart("offers");
        if (!value.getOffers().isEmpty()) {
            for (SpecialsOfferDetailsResponse r : value.getOffers())
                jgen.writeObject(r);
        }
        jgen.writeEndArray();
        jgen.writeEndObject();
    }

    @Override
    public Class<SpecialsResponse> handledType() {
        return SpecialsResponse.class;
    }
}

потом добавить бин

@Configuration
public class Config {
    @Bean
    public SimpleModule getMod() {
        SimpleModule mod = new SimpleModule("MyModule");
        mod.addSerializer(new CustomSpecialsResponseSerializer());
        return mod;
    }
}

и над контроллером

@JsonSerialize(using = CustomMyObjectSerializer .class)
→ Ссылка