序列化多态json到特定的jsonnode

时间:2017-08-23 07:48:49

标签: java json spring jackson

我有抽象类列表

List<Messaging> data;

Messaging是一个抽象类,另外3个类正在扩展这个类。

例如,

   Message class extends Messaging
   Product class extends Messaging
   Filter class extends Messaging

我正在添加上面列表中的所有消息

我在Messaging类上使用了@JsonTypeInfo,如下所示:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY)
@JsonSubTypes({  
    @Type(value = Message.class, name = "message"),  
    @Type(value = Filter.class, name = "filter"),
    @Type(value = Product.class , name = "product")})

当我使用jackson将这个Java对象序列化为JSON时,我得到的值如下:

   {
        "@type": "message",
        "type": "text",
        "value": "Is this the information you need"
    }

我希望我的价值如下:

"message" : {
        "type": "text",
        "value": "Is this the information you need"
}

如何将多态对象列表序列化到不同的节点?

1 个答案:

答案 0 :(得分:2)

JsonTypeInfo更改为WRAPPER_OBJECT

e.g:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT)