【发布时间】:2016-12-09 15:02:34
【问题描述】:
所以,我有配置
.defaultTyping(NON_FINAL)
将正确序列化的 json 编写为:
"headers": [
"org.springframework.messaging.MessageHeaders",
{
现在,问题是 MessageHeaders 类正在实现 Map,但也覆盖了 put 方法,因此它会引发异常。为了正确反序列化,我需要能够将其序列化为 HashMap,所以:
"headers": [
"java.util.HashMap",
{
或者能够将 MessageHeaders 显式反序列化为 HashMap(因为它实际上只是 Map。
还有一个问题:如何将实现 Map 的 Object 序列化为 HashMap,或者如何将实现 Map 的 Object 反序列化为 HashMap。
【问题讨论】:
-
你试过@JsonDeserialize(as = java.util.HashMap.class) 注解吗?
-
是的,我做到了。抛出的异常是MessageHeaders不能反序列化为HashMap。 MessageHeaders 仅实现 Map 接口。在内部,它具有最终的 Map headers 属性,用于存储此值。
-
我也试过 @JsonSerialize(as=Map.class) 但我认为默认类型 NON_FINAL 优先
标签: java json serialization jackson deserialization