【问题标题】:How to overwrite type information when serializing objects with jackson?用杰克逊序列化对象时如何覆盖类型信息?
【发布时间】:2013-06-14 12:44:14
【问题描述】:

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

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

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

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

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

我也知道杰克逊有这个hibernate-datatype模块,但这并不能解决问题(我猜这个模块主要用于尊重LAZY_LOADING-hibernate-property)。

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

【问题讨论】:

    标签: java hibernate jackson


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2014-10-10
      • 2016-12-07
      相关资源
      最近更新 更多