我有一个用 Maven 构建的 Spring MVC 3.1 应用程序,我想使用 Jackson 2 进行 JSON 序列化/反序列化。我在我的 pom.xml 文件中明确包含了 Jackson 2.x 依赖项,尽管我的应用程序有一个在内部使用 Jackson 1.9.9 的不同依赖项,我无法轻松删除该依赖项。
由于两个 Jackson 库都存在于类路径中,因此 Spring 似乎默认使用 Jackson 版本 1.9.9。
如何强制 Spring MVC 使用 Jackson 2?
我有一个用 Maven 构建的 Spring MVC 3.1 应用程序,我想使用 Jackson 2 进行 JSON 序列化/反序列化。我在我的 pom.xml 文件中明确包含了 Jackson 2.x 依赖项,尽管我的应用程序有一个在内部使用 Jackson 1.9.9 的不同依赖项,我无法轻松删除该依赖项。
由于两个 Jackson 库都存在于类路径中,因此 Spring 似乎默认使用 Jackson 版本 1.9.9。
如何强制 Spring MVC 使用 Jackson 2?
为了完成这项工作,我必须调整我的 mvc:annotation-driven xml 配置元素,使其工作如下:
<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<bean id="jacksonMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
在Spring 3.2中添加了对 Jackson 2 的支持并向后移植到Spring 3.1.2。一旦你有了这些版本之一,你只需要类路径上的 jackson-databind 库,如此处所述
或者,Keith Donald 在此要点中包含了 MappingJackson2HttpMessageConverter 的源代码,如本答案中所述。