Сериализация пустого 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)