Java 使用Jackson 2.0序列化映射中的JSON对象

Java 使用Jackson 2.0序列化映射中的JSON对象,java,json,web-services,spring-mvc,jackson,Java,Json,Web Services,Spring Mvc,Jackson,我正在编写一系列Java类来表示Spring MVC web服务中的请求和响应,配置为使用基于Jackson 2.0注释的JSON处理,并使用Jackson数据绑定模块。这些类包含各种字段,在需要时进行注释,以支持JSON对象的序列化和反序列化 我有一个POJO,它包含一个带有多态值的映射字段。映射值可以有几种类型,主要是字符串、其他模型类,特别是其他JSON对象(表示为JsonNode) 我希望实现的是一种特殊情况,在这种情况下,当遇到一个JsonNode或它的一个子类型作为映射值时,JSON

我正在编写一系列Java类来表示Spring MVC web服务中的请求和响应,配置为使用基于Jackson 2.0注释的JSON处理,并使用Jackson数据绑定模块。这些类包含各种字段,在需要时进行注释,以支持JSON对象的序列化和反序列化

我有一个POJO,它包含一个带有多态值的映射字段。映射值可以有几种类型,主要是字符串、其他模型类,特别是其他JSON对象(表示为JsonNode)

我希望实现的是一种特殊情况,在这种情况下,当遇到一个JsonNode或它的一个子类型作为映射值时,JSON对象被序列化,而不显式地将类型名称添加到映射中。在本例中,在反序列化时,Jackson将在发现未知数组结构时生成ArrayNode。当遇到其他多态类型时,它仍将继续生成其他多态类型

上面的示例如下所示:

outputValues: {
    result:            
        [
             {
                Content-Type: "application/json",
                url: "http://server.url"
             },
             {
                 Content-Type: "application/json",
                 url: "http://server.url.2"
             }
        ]
}

在进一步搜索之后,我得出结论,如果不重写Jackson的序列化程序,就不可能解决我的问题

在杰克逊的邮件列表中,我给出了以下答案:

您可以重写用于JsonNode的反序列化程序,也可以用来更改多态类型id的处理。对于预期类型id的情况,有一个单独的反序列化方法,类似于序列化程序。这可能会使处理您的案件成为可能


我想这是确定的答案。

你知道答案了吗。如果是,请将其添加为答案。我也有同样的问题不幸的是这是不可能的。我添加了到目前为止我得到的答案。你写了序列化程序吗?
outputValues: {
    result: [
        "com.fasterxml.jackson.databind.node.ArrayNode",
        [
             {
                Content-Type: "application/json",
                url: "http://server.url"
             },
             {
                 Content-Type: "application/json",
                 url: "http://server.url.2"
             }
        ]
   ]
}
outputValues: {
    result:            
        [
             {
                Content-Type: "application/json",
                url: "http://server.url"
             },
             {
                 Content-Type: "application/json",
                 url: "http://server.url.2"
             }
        ]
}