春天4和杰克逊2

时间:2015-05-25 12:01:42

标签: spring jackson

我在一个旧项目中使用了杰克逊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

1 个答案:

答案 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
);