我在一个旧项目中使用了杰克逊1。现在,我想在春季4项目中使用jackson 2。但我有问题整合杰克逊。
弹簧调度员中的jackson配置:
<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" />
<bean id="jacksonSerializationConfig" class="com.fasterxml.jackson.databind.SerializationConfig"
factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig" />
<bean
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="jacksonSerializationConfig" />
<property name="targetMethod" value="setSerializationInclusion" />
<property name="arguments">
<list>
<value type="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion">NON_DEFAULT</value>
</list>
</property>
</bean>
<bean
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="jacksonObjectMapper" />
</bean>
</list>
</property>
</bean>
在这里我的家属使用gradle:
dependencies{
compile project('LiveLizard-BackEndGradle')
compile 'javax.servlet:jstl:1.2'
compile 'javax.servlet:javax.servlet-api:3.1.0'
compile 'org.springframework:spring-context:4.1.6.RELEASE'
compile 'org.springframework:spring-core:4.1.6.RELEASE'
compile 'org.springframework:spring-webmvc:4.1.6.RELEASE'
compile 'org.springframework:spring-tx:4.1.6.RELEASE'
compile 'org.springframework:spring-jdbc:4.1.6.RELEASE'
compile 'org.springframework:spring-orm:4.1.6.RELEASE'
compile 'org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Draft-16'
compile 'org.hibernate:hibernate-core:4.3.8.Final'
compile 'org.aspectj:aspectjweaver:1.8.5'
compile 'mysql:mysql-connector-java:5.1.35'
compile 'org.hibernate:hibernate-entitymanager:4.3.8.Final'
compile 'junit:junit:4.4'
compile 'javax.validation:validation-api:1.1.0.Final'
compile 'org.hibernate:hibernate-validator:5.1.3.Final'
compile 'org.thymeleaf:thymeleaf-spring4:2.1.4.RELEASE'
compile 'com.fasterxml.jackson.core:jackson-core:2.5.3'
compile 'com.fasterxml.jackson.core:jackson-databind:2.5.3'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.5.3'
}
当我尝试午餐时,我收到了这条消息:
Error creating bean with name 'org.springframework.beans.factory.config.MethodInvokingFactoryBean#0' defined in ServletContext resource [/WEB-INF/springmvcdispatcher-servlet.xml]: Error converting typed String value for bean property 'arguments' with key [0]; nested exception is java.lang.ClassNotFoundException: org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion
Caused by: java.lang.ClassNotFoundException: org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion
答案 0 :(得分:1)
JsonSerialize.Inclusion
现已在com.fasterxml.jackson.databind.annotation
中定义,但不推荐使用com.fasterxml.jackson.annotation.JsonInclude
在java配置中,您可以这样配置:
MappingJackson2HttpMessageConverter converter =
new MappingJackson2HttpMessageConverter();
converter.getObjectMapper().setSerializationInclusion(
JsonInclude.Include.NON_DEFAULT
);