我正在使用Jackson 2.1.4,并希望序列化扩展Event类的对象集合,并且JSON必须包含用于多态的类名。我在Event上放了一个@JsonTypeInfo注释,但不幸的是我不能使用CLASS作为策略,因为我的对象实例化模式是“new FooEvent(){{bar = someValue;}}”,它将创建匿名内部类。我想把“FooEvent”作为JSON中的类型,而不是匿名内部类。
似乎我需要的是这样做:
@JsonTypeInfo(use= JsonTypeInfo.Id.CUSTOM, include= JsonTypeInfo.As.PROPERTY, property="type")
但是如何注册我自己的自定义id序列化程序,它将输出类的名称?
答案 0 :(得分:1)
想出如何解决这个问题:基本上在与@JsonTypeInfo相同的类上添加@JsonTypeIdResolver注释,然后实现它可以引用的解析器。 Here's我的样子。它本质上只是删除匿名内部类(如果存在)。