【发布时间】:2017-03-09 09:40:49
【问题描述】:
通过 Jackson 将对象序列化为 yml 时,我得到以下输出:
---
commands:
dev: !<foo.bar.baz.DevCommand>
但是,我想要的是:
---
commands:
dev:
type: foo.bar.baz.DevCommand
我能够很好地反序列化。也就是说,反序列化部分按预期工作。我在我能想到的任何地方都放了以下注释:
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="type")
包括 DevCommand 接口、DevCommand 上的具体类、具有 commands 映射的类型(包括字段和 getter/setter)。
我需要做什么来强制 Jackson 使用我想要的类型格式?
【问题讨论】:
-
来自 JsonTypeInfo 的文档:用于配置类型信息是否以及如何与 JSON 序列化和反序列化一起使用的详细信息 - 因为您序列化为YAML,根本不适用,Jackson 改用 YAML 的标签系统。
-
@flyx 但是它使用JsonTypeInfo注解来配置yaml的反序列化......