Serialization 如何在Jackson中使用自定义id序列化程序?

Serialization 如何在Jackson中使用自定义id序列化程序?,serialization,jackson,Serialization,Jackson,我正在使用Jackson 2.1.4,希望序列化扩展事件类的对象集合,其中JSON必须包含用于多态性目的的类名。我在事件上添加了@JsonTypeInfo注释,但不幸的是,我不能使用类作为策略,因为我的对象实例化模式是“new FooEvent(){{{bar=someValue;}}”,它将创建匿名内部类。我想将“FooEvent”作为JSON中的类型,而不是匿名内部类 看来我需要做的是: @JsonTypeInfo(use= JsonTypeInfo.Id.CUSTOM, include=

我正在使用Jackson 2.1.4,希望序列化扩展事件类的对象集合,其中JSON必须包含用于多态性目的的类名。我在事件上添加了@JsonTypeInfo注释,但不幸的是,我不能使用类作为策略,因为我的对象实例化模式是“new FooEvent(){{{bar=someValue;}}”,它将创建匿名内部类。我想将“FooEvent”作为JSON中的类型,而不是匿名内部类

看来我需要做的是:

@JsonTypeInfo(use= JsonTypeInfo.Id.CUSTOM, include= JsonTypeInfo.As.PROPERTY, property="type")

但是我如何注册我自己的自定义id序列化程序来输出类的名称呢?

找到了解决方法:基本上在具有@JsonTypeInfo的同一个类上添加@JsonTypeIdResolver注释,然后实现一个它可以引用的解析器。我的看起来像什么。它实际上只是删除匿名的内部类(如果存在)。

嗨,里卡德!不幸的是,您的示例已不再联机,当我尝试提出自己的版本(扩展了
TypeIdResolverBase
)时,我在运行时遇到一个异常,即无法实例化该示例,因为没有可用的空构造函数。任何帮助都将不胜感激!