java - 使用 Jackson 序列化对象时如何覆盖类型信息?

标签 java hibernate jackson

我目前正在尝试序列化之前通过 Hibernate 加载的数据。为了恢复类型信息,我启用了默认键入,如下所示:

objectMapper.enableDefaultTyping(DefaultTyping.NON_CONCRETE_AND_ARRAYS,As.PROPERTY);

我还通过此注释向我的实体添加了身份信息:

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")

但是,当我反序列化我拥有的 @OneToMany 关系时,反序列化失败,因为 PersistentBag 此时没有 session 。因为我的程序在没有容器的情况下运行,所以我无法轻松解决这个问题。

我还知道 jackson 有一个 hibernate 数据类型模块,但这并不能解决问题(我猜该模块主要用于尊重 LAZY_LOADING-hibernate-property)。

所以我解决这个问题的想法是不序列化 PersistentBag 而是序列化 ArrayList 。有没有一种简单的方法可以做到这一点,或者我必须编写自己的序列化程序(我尝试过但没有成功)?

最佳答案

我通过解决方法解决了这个问题,通过注释将类型信息添加到我想要序列化的类中,并删除了默认输入行:

objectMapper.enableDefaultTyping(DefaultTyping.NON_CONCRETE_AND_ARRAYS,As.PROPERTY);

关于java - 使用 Jackson 序列化对象时如何覆盖类型信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17108757/

相关文章:

Java:创建文本窗口以显示控制台文本

Spring+Hibernate+Ehcache让query_cache永不过期

Hibernate 继承策略及原因

javascript - 即使设置时区后,Jackson json 格式日期也会序列化

java - 兼容性问题? ActionBarActivity 已弃用,取而代之的是新的 AppCompatActivity

java - 空指针异常apache poi

eclipse - Hibernate:需要 AnnotationConfiguration 实例才能使用...错误

具有生成默认值的请求主体的 Spring rest Controller ?

java - 使用 Jackson 对 Scala 案例类进行(反)序列化

java - 在 session 中存储 Axis 原始 XML 请求/响应(用于 JSP)