如何解决Spring MVC 和 JAXB 映射 - 只需要请求正文中的 ArrayLists 的根元素
我遇到了一个在 JAX/RS 中工作正常的 post 端点。请求正文具有仅用于数组列表的根元素,如下所示。我现在已将此端点迁移到 spring MVC,并且 Spring 似乎不适用于 Json 请求正文中的根元素。我的要求是不要更改请求正文。我只想为列表保留根元素名称。
请求正文示例
{
"name": "xyz","status": 1,"group": 1,"shoppingLists": {
"shopping": [
{
"xyz": 0,"id": 1,"listValues": {
"list": [
{
"id": 1,"xyz": "100"
}
]
}
}
]
}
}
我收到以下异常
{
"status": 400,"error": "Bad Request","exception": "org.springframework.http.converter.HttpMessageNotReadableException","message": "JSON parse error: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token\n at ......"
}
我尝试过的事情:
-
我已经从请求正文中删除了根元素 - 这很好用。但需要不同的方法
-
我在 WebConfig 中使用了以下 Objectmapper - 这将考虑所有属性的根元素,而不仅仅是列表
@Bean public MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE,true); objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE,true); jsonConverter.setObjectMapper(objectMapper); return jsonConverter;
}
@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { converters.add(customJackson2HttpMessageConverter()); super.addDefaultHttpMessageConverters(converters); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。