【发布时间】:2019-05-25 20:39:02
【问题描述】:
我有一个 Spring Boot 应用程序,它正在对 ActityStreams 对象进行建模,并且在大多数情况下,Jackson 的多态反序列化运行良好。
JSON 中有“对象”,它们是引用(链接),而不是带有类型信息的 JSON 对象。例如
"actor":"https://some.actors.href/ 而不是
"actor":{
"type":"Actor",
"name":"SomeActor"
}
我已经编写了自定义反序列化器并将它们放在字段中以处理此问题
@JsonDeserialize (using = ActorOrLinkDeserializer.class)
private Actor actor;
但是我的ActorOrLinkDeserializer 被实例化但从未被调用,Jackson 抱怨来自多态反序列化器的Missing type id when trying to resolve subtype of [simple type, class org.w3.activity.streams.Actor]: missing type id property 'type' (for POJO property 'actor')。
看来,多态反序列化代码优先于我的本地 @JsonDeserialize 注释,我需要一种方法来强制我的代码首先运行。
我尝试使用我自己的 ObjectMapper 而不是 Boot 的,但没有任何区别。
非常感谢您的指点和建议。
【问题讨论】:
标签: spring-boot jackson jackson2 jackson-databind