В моем приложении мне нужно поддерживать оба формата ответа: json и xml и не указывать пустые значения в ответах. В ответе json это работает нормально, но не в ответе xml. Результат:
{
"anotherValue": "value"
}
и:
<MyDoc>
<value/>
<anotherValue>value</anotherValue>
</MyDoc>
Я бы хотел, чтобы xml выглядел следующим образом:
<MyDoc>
<anotherValue>value</anotherValue>
</MyDoc>
Аннотирование каждого класса ответа с помощью @JsonInclude(JsonInclude.Include.NON_NULL)
это возможное решение, но я хочу, чтобы оно было настроено глобально. Мой код:
@SpringBootApplication
@RestController
@Configuration
public class Application {
@Bean
public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) {
return builder
.serializationInclusion(JsonInclude.Include.NON_NULL)
.serializationInclusion(JsonInclude.Include.NON_EMPTY)
.build();
}
@GetMapping(value = "api/json", produces = APPLICATION_JSON_VALUE)
public MyDoc json() {
return new MyDoc(null, "value");
}
@GetMapping(value = "api/xml", produces = APPLICATION_XML_VALUE)
public MyDoc xml() {
return new MyDoc(null, "value");
}
public static class MyDoc {
public String value;
public String anotherValue;
public MyDoc(String val1, String val2) {
this.value = val1;
this.anotherValue = val2;
}
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Что мне здесь не хватает? Любая помощь приветствуется! Спасибо, DagR