我正在使用 Spring MVC 来处理 JSON POST 请求。在幕后,我使用的是基于 Jackson JSON 处理器构建的 MappingJacksonHttpMessageConverter,并在使用 mvc:annotation-driven 时启用。
我的一项服务收到一系列操作:
@RequestMapping(value="/executeActions", method=RequestMethod.POST)
public @ResponseBody String executeActions(@RequestBody List<ActionImpl> actions) {
logger.info("executeActions");
return "ACK";
}
我发现 Jackson 将 requestBody 映射到 java.util.LinkedHashMap 项列表(简单数据绑定)。相反,我希望将请求绑定到类型对象列表(在本例中为“ActionImpl”)。
我知道如果您直接使用 Jackson 的 ObjectMapper,这很容易做到:
List<ActionImpl> result = mapper.readValue(src, new TypeReference<List<ActionImpl>>() { });
但我想知道使用 Spring MVC 和 MappingJacksonHttpMessageConverter 时实现此目的的最佳方法是什么。有什么提示吗?
Thanks
我发现您还可以通过使用数组作为 @RequestBody 而不是集合来解决类型擦除问题。例如,以下内容可以工作:
public @ResponseBody String executeActions(@RequestBody ActionImpl[] actions) { //... }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)