jackson多态反序列化怎么实现

   2025-02-15 8200
核心提示:在Jackson中,实现多态反序列化可以使用@JsonTypeInfo注解和@JsonSubTypes注解。首先,在父类上使用@JsonTypeInfo注解,指定多态

在Jackson中,实现多态反序列化可以使用@JsonTypeInfo注解和@JsonSubTypes注解。

首先,在父类上使用@JsonTypeInfo注解,指定多态类型的字段名和默认的多态类型处理策略。例如:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")public abstract class Animal {    private String name;    // ...}
接下来,在父类上使用@JsonSubTypes注解,指定不同子类对应的多态类型名称。例如:
@JsonSubTypes({    @JsonSubTypes.Type(value = Cat.class, name = "cat"),    @JsonSubTypes.Type(value = Dog.class, name = "dog")})public abstract class Animal {    // ...}
完成上述步骤后,可以对包含多态类型字段的JSON字符串进行反序列化,Jackson会根据字段值自动识别并创建相应的子类实例。例如:
String json = "{\"type\":\"cat\",\"name\":\"Tom\"}";ObjectMapper objectMapper = new ObjectMapper();Animal animal = objectMapper.readValue(json, Animal.class);

上述代码中,根据JSON字符串中的"type":"cat"字段值,Jackson会自动将其反序列化为Cat类的实例。

注意:上述示例中的Animal类是一个抽象类,如果需要实例化Animal对象,可以将其改为普通类或者使用@JsonTypeIdResolver注解来指定一个自定义的类型解析器。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言