gpt4 book ai didi

java - 如何使用 Jackson 将子类型序列化为 super 类型

转载 作者:行者123 更新时间:2023-12-01 22:37:23 28 4
gpt4 key购买 nike

所以我尝试使用 jackson 来序列化我的 session ,并且我正在使用 jpa 和 gauva。

我看到如下错误:

Could not read JSON: The class with org.apache.openjpa.util.java$util$Date$proxy and name of org.apache.openjpa.util.java$util$Date$proxy is not whitelisted

所以换句话来说,被序列化的日期类型就是子类型。

现在我想做的是将数据类型序列化为 Date 类型而不是特定类型,以便我可以简化序列化,尤其是简化反序列化。

我希望有一种方法可以简单地添加映射,即如果您找到 X 类型,则将其序列化为 Y 类型。

最佳答案

感谢您的评论。

所以我没有意识到,当使用 mixin 自定义序列化时,您需要在声明的类型上添加 mixin,而不是在实际类型上。我需要覆盖默认配置,因为默认配置包含类型 (org.apache.openjpa.util.java$util$Date$proxy),并且我为此类型添加了一个 mixin。但我实际上需要做的是为 java.util.Date 添加混合,因为这是声明的类型。

现在添加 mixin:

@JsonTypeInfo(use = Id.NONE)
public static class DateMixin {

}

通过做

context.setMixInAnnotations(Date.class, DateMixin.class);

而不是:

context.setMixInAnnotations(org.apache.openjpa.util.java$util$Date$proxy.class, DateMixin.class);

我得到了预期的行为。

它将我的日期序列化为

"date":["org.apache.openjpa.util.java$util$Date$proxy",1571822501152]}

现在添加了 mixin,我得到:

"date":1571822501152

这就是我正在寻找的。

关于java - 如何使用 Jackson 将子类型序列化为 super 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58519261/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com