java - Jackson 的 @JsonTypeInfo(use = Id.CUSTOM, include = As.PROPERTY, property = "type") 读取除了 "type"以外的所有 JSON 字段

标签 java json jackson jackson2

我逐行检查了每一行代码,但我认为这是 Jackson 在内部处理多态性的方式。

Dog的经典例子和 Cat扩展Animal :

@JsonTypeInfo(use = Id.CUSTOM, include = As.PROPERTY, property = "type")
@JsonTypeIdResolver(AnimalTypeIdResolver.class)
@JsonIgnoreProperties(ignoreUnknown = true)
public abstract class Animal implements Serializable {
    public AnnotatorBundleConfig(String name) {
        super();
        this.name = name;
    }

狗类:

public class DogAnimal extends Animal {
    @JsonCreator
    public DogAnimal(
        @JsonProperty(value="name", required=true) String name,
        @JsonProperty(value="bark_decibel") int bark_decibel)
    {
    super(name);
    this.bark_decibel = bark_decibel;}

猫类:

public class CatAnimal extends Animal {
    @JsonCreator
    public CatAnimal(
        @JsonProperty(value="name", required=true) String name,
        @JsonProperty(value="meow_level") int meow_level)
    {
    super(name);
    this.meow_level = meow_level;}

AnimalTypeIdResolver是扩展 AbstractTypeIdResolver 的典型 TypeIdResolver .

出于一些非常奇怪的原因,bark_decibelmeow_level是从 JSON 反序列化的,但是 type正在以 null 的形式进入.有什么想法吗?

最佳答案

@JsonTypeInfo设置visible=true:

@JsonTypeInfo(use = Id.CUSTOM, include = As.PROPERTY, property = "type", visible=true)

引用this post

关于java - Jackson 的 @JsonTypeInfo(use = Id.CUSTOM, include = As.PROPERTY, property = "type") 读取除了 "type"以外的所有 JSON 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39714780/

相关文章:

java - 映射JacksonJsonView : ignore fields without using @JsonIgnore

java - Spring Boot 中 OffsetDateTime 的 jackson 日期格式

java - MVC 中 View 与模型的通信如何发生

java - 如何将 MySQL 表数据插入 JSONArray?

java - 在servlet中将HashMap数组转换为json对象并在jsp页面中显示

java - 使用 jackson 删除 JSON 元素

java - jackson 反序列化可选抛出 NoSuchFieldError

java - Java 中的 Hashset 出现这种奇怪行为的原因是什么?

java - 带有 NullPointerException 的列表

javascript - 根据 javascript 中的条件合并两个嵌套的 JSON 对象