【问题标题】:JsonIgnore does not work with SpringJsonIgnore 不适用于 Spring
【发布时间】:2016-05-13 08:47:08
【问题描述】:

如何解决这个问题?

我尝试将@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>

【问题讨论】:

  • 您希望 GSON 能够使用 Jackson 注释。

标签: java json spring spring-mvc jackson


【解决方案1】:

首先,添加jackson-databind依赖:

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

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

<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 通常为其抽象使用定义明确且长名称的名称,因此您可以轻松找出每个名称的用途。显然GsonHttpMessageConverterHttpMessageConverterGson,而不是Jackson。结帐Spring documentation 以获得更详细的讨论。

【讨论】:

    【解决方案2】:

    请查看您的代码:

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

    您需要Jackson 版本的转换器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      相关资源
      最近更新 更多