如何为Jackson编写自定义JSON反序列化器?

约翰 :

我需要将一些JSON反序列化为Java类。我有以下JSON:

{
  "list": [[{
        "type": "text",
        "subType": "ss"
     },
     {
        "type": "image",
        "subType": "text"
     }
]]
}

并且我有以下Java类:

public abstract class BaseClass {
    public String type;
    public String subType;
}

public class Text extends BaseClass {
   ...
}

public class Image extends BaseClass {
}

并且我需要以这种方式反序列化,如果type相等imagesubType相等,text我需要反序列化为Text类,否则我需要反序列化为Image类。

我该怎么做?

香蒲

您不需要自定义解串器。使用以下注释标记您的BaseClass,并使用ObjectMapper反序列化:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", visible = true)
@JsonSubTypes({@JsonSubTypes.Type(value = Text.class, name = "text"), @JsonSubTypes.Type(value = Image.class, name = "image")
})
public abstract class BaseClass {
    public String type;
    public String subType;
}

JsonTypeInfo定义使用type字段的作为类型名称。JsonSubTypes将类型名称与Java类相关联

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为自定义Jackson序列化器编写JUnit-Test?

编写多个自定义 Jackson 反序列化器来处理继承的正确方法

使用Jackson自定义JSON反序列化

如何在杰克逊中编写自定义属性反序列化器

使用Jackson的自定义JSON序列化/反序列化

如何使用尊重自定义注释的Jackson来执行自定义JSON反序列化?

Jackson 的多态序列化/反序列化和自定义序列化器/反序列化器

如何在Jackson JSON(反序列化)中自定义序列化或转换具有自定义键类型的Map属性?

使用Jackson进行自定义反序列化:扩展默认反序列化器

Jackson对多态对象的自定义反序列化

使用Jackson自定义反序列化列表

使用自定义反序列化器 Jackson 将 .json 文件转换为 Java 对象

杰克逊(Jackson)如何在自定义序列化器/反序列化器中检索父bean

Spring Boot 2.1.4:@Autowired在自定义的Jackson序列化器/反序列化器中不起作用,如何启用它?

Scala jackson - 自定义反序列化器不兼容类型

当值为“ null”时,Jackson忽略自定义字段反序列化器

Spring Jackson 自定义反序列化器未调用

向 Jackson 反序列化器添加自定义参数

Jackson-仅将自定义反序列化器用于特定的JSON

使用Jackson自定义反序列化JSON字段

Jackson JSON无法使用自定义根名称反序列化元素数组?

在Java中使用Jackson进行JSON FIELD的自定义反序列化?

Jackson中的自定义JSON反序列化,排除invalide数组

Spring Kafka自定义反序列化器

如何编写自定义json序列化程序并将值序列化为数组

Ktor自定义json对象反序列化

自定义反序列化

如何在Spray JSON中为布尔类型实现自定义反序列化器

如何在Spring Boot应用程序中将参数传递给自定义JSON反序列化器