- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Jackson 将一些 JSON 反序列化为 Java POJO。我用我的对象映射器注册了 MrBean 模块,所以我所要做的就是定义一堆接口(interface),POJO 是基于这些接口(interface)自动生成的。
我想要一个 Credentials 接口(interface),其中包含扩展它的各种类型的凭证,例如UsernamePasswordCredentials 和 CertificateFileCredentials。
在没有任何注释或其他咒语的情况下执行此操作以尝试使其工作会在我的单元测试中出现以下错误:
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "username" (Class org.codehaus.jackson.generated.SCRUBBED.Credentials), not marked as ignorable
at [Source: java.io.StringReader@e0b6f5; line: 32, column: 29] (through reference chain: HostConfiguration["hostDefinitions"]->HostDefinition["credentials"]->Credentials["username"])
我也followed the instructions at another StackOverflow post ,我遇到了同样的错误。
这个错误是有道理的; Jackson 试图将我的 JSON 文件的内容映射到一个空接口(interface)。但是,我(也许天真地)希望 Jackson 寻找扩展基本 Credentials 接口(interface)的接口(interface),并尝试将这些接口(interface)中的字段与它在 JSON 对象中找到的字段相匹配。
我在 Jackson wiki 上看到了一些使用 JSON 对象中的元信息的示例,例如用 "@class":"foo.bar.CertificateFileCredentials"
装饰一个对象,但我宁愿避免任何这种情况,因为我的 JSON 输入将由其他服务自动生成,而那些其他服务不必了解我的服务的内部结构。
谢谢!
最佳答案
您将如何定义实际的实现类?作为附加接口(interface)?那些应该正确生成;但问题是在反序列化过程中:如果有多种选择,反序列化器必须有某种方法来找出要使用的实际类型。为此,如您所见,建议使用 @JsonTypeInfo
。
关于java - 在 Jackson(和 MrBean)的反序列化时使用多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9541209/
我有这个代码: ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerModule(new JavaTimeModu
我正在使用 Jackson 将一些 JSON 反序列化为 Java POJO。我用我的对象映射器注册了 MrBean 模块,所以我所要做的就是定义一堆接口(interface),POJO 是基于这些接
我是一名优秀的程序员,十分优秀!