【问题标题】:@JsonIgnore not working after upgrading to spring 4.1.6@JsonIgnore 升级到 spring 4.1.6 后不起作用
【发布时间】:2015-07-05 12:22:25
【问题描述】:

我已经尝试了 SO thisthis 以及许多其他提供的所有解决方案,但似乎没有任何解决方案可以解决我的问题。我遇到了异常

com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy - no Session (through reference chain: java.util.ArrayList[0]-

我不明白为什么 spring 使用 fasterxml.jackson 而之前的版本是从 codehaus 使用它

以前的春季版本 3.1.2.Release 当前春季版本 4.1.6.Release

【问题讨论】:

  • 除了包名更新外,我猜这与事务(Hibernate,JPA等)有关,你能提供相关的堆栈跟踪和代码吗?
  • @hsluo 感谢您的回复,我已经通过将 codehaus jackson 更改为 fasterxml jackson 解决了这个问题

标签: java spring spring-mvc


【解决方案1】:

您应该与您发布的链接中的建议完全相反,因此将您的 Jackson 课程包从 org.codehaus.jackson 更改为 com.fasterxml.jackson

截至 Spring Framework 4.1,最低 jackson 版本应为 2.1 (2.3 recommended)。相关的变化,你的问题的可疑原因是杰克逊 2.x 也有一个包转移

  • 使用的 Java 包是“com.fasterxml.jackson”(而不是“org.codehaus.jackson”)
  • Maven 组 ID 以“com.fasterxml.jackson”开头(而不是“org.codehaus.jackson”)

如果您使用的是 maven,只需将您当前的 jackson 依赖项替换为这个单独的依赖项

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.5.1</version>
    </dependency>

【讨论】:

    【解决方案2】:

    旧版本的 Spring 使用 Jackson 1.9,它在 org.codehaus.jackson 包中有类。 Spring 4.1.6.Release 使用 Jackson 2.x,它的类在 com.fasterxml.jackson 包中。因此,旧的注释会被简单地忽略。

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 2020-02-27
      • 2018-05-30
      • 1970-01-01
      • 2015-12-08
      相关资源
      最近更新 更多