JsonIgnore不适用于Spring

时间:2016-05-13 08:47:09

标签: java json spring spring-mvc jackson

如何解决这个问题?

我尝试将@JsonIgnore添加到getter,但结果相同。

POJO:

public class Category {
    // Omitted details

    @JsonIgnore
    private List<Category> children;
}

来自build.gradle

'com.fasterxml.jackson.core:jackson-annotations:2.7.3'

春季版:

4.2.6.RELEASE

上下文:

<bean id="jacksonMessageConverter"
      class="org.springframework.http.converter.json.GsonHttpMessageConverter"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jacksonMessageConverter"/>
        </list>
    </property>
</bean>

2 个答案:

答案 0 :(得分:1)

首先,添加jackson-databind依赖项:

'com.fasterxml.jackson.core:jackson-databind:2.7.3'

您可以删除jackson-annotations,因为它会被传递解决。然后,在类路径上使用approperaite Jackson jar,Spring MVC将自动为您配置所需的HttpMessageConverter。因此,无需手动注册它们。因此,您可以安全地摆脱以下现象:

<bean id="jacksonMessageConverter"
      class="org.springframework.http.converter.json.GsonHttpMessageConverter"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jacksonMessageConverter"/>
        </list>
    </property>
</bean>

Spring通常使用定义明确且名称较长的抽象名称,因此您可以轻松找出每个名称的用途。显然,GsonHttpMessageConverterGsonHttpMessageConverter,而不是Jackson。结帐Spring documentation以获得更详细的讨论。

答案 1 :(得分:1)

请查看您的代码:

<bean id="jacksonMessageConverter"
      class="org.springframework.http.converter.json.GsonHttpMessageConverter"/>

您需要Jackson版本的转换器