jsontypeinfo jsonsubtypes注解用法
时间: 2023-08-12 19:26:28 浏览: 60
`@JsonTypeInfo` 和 `@JsonSubTypes` 是 Jackson 序列化和反序列化 JSON 数据时用于处理多态类型的注解。
`@JsonTypeInfo` 注解用于指定 JSON 中表示多态类型信息的字段名称、字段类型和使用的机制。常用的机制包括:
- `JsonTypeInfo.Id.CLASS`:使用类名作为类型标识;
- `JsonTypeInfo.Id.NAME`:使用自定义名称作为类型标识;
- `JsonTypeInfo.Id.MINIMAL_CLASS`:使用简单类名作为类型标识。
`@JsonSubTypes` 注解用于指定多态类型的所有子类型及其对应的类名或自定义名称。
示例代码:
```java
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Dog.class, name = "dog"),
@JsonSubTypes.Type(value = Cat.class, name = "cat")
})
public abstract class Animal {
public String name;
}
public class Dog extends Animal {
public String breed;
}
public class Cat extends Animal {
public int age;
}
```
以上代码定义了一个 `Animal` 抽象类和两个具体子类 `Dog` 和 `Cat`,并使用 `@JsonTypeInfo` 注解指定了类型标识字段名为 `type`,使用自定义名称作为类型标识。同时使用 `@JsonSubTypes` 注解指定了 `Dog` 和 `Cat` 作为 `Animal` 的子类型,分别对应类型标识值为 `dog` 和 `cat`。这样,当序列化和反序列化 JSON 数据时,Jackson 就能正确地处理多态类型了。