I'm trying to make it so my Spring rest application can handle both xml and json responses, but it seems like adding a Jaxb message converter has broken my json mapping.
@Bean
public MappingJackson2HttpMessageConverter jsonConverter() {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(String.class, new StringSerializer());
ObjectMapper mapper = new ObjectMapper()
.registerModule(simpleModule);
converter.setObjectMapper(mapper);
return converter;
}
@Bean
public Jaxb2RootElementHttpMessageConverter jaxbConverter() {
return new Jaxb2RootElementHttpMessageConverter();
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(jsonConverter());
converters.add(jaxbConverter());
}
If I comment out the second and third methods there, everything starts working again (except the xml mapping of course!). With those there, though, I get screwed up stuff, like serializing a List<String>
results in [APPLEORANGEBANANA]
, where apple, orange, and banana are separate strings in the list.
If I directly use a jackson object mapper to map to json, it doesn't have that issue, but using the @ResponseBody
annotation to automatically serialize to json I have this issue.
Anyone have any ideas?