jackson多态反序列化怎么实现
短信预约 -IT技能 免费直播动态提醒
在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
注解来指定一个自定义的类型解析器。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341