假设我有以下类:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "class")
@JsonSubTypes({ @JsonSubTypes.Type(value = Rabbit.class) })
abstract class Animal {
}
class Rabbit {
}
序列化时,我通常需要类型,因此需要注释。我有一个用例,我想序列化,但没有type属性。我不想利用DTO。我无法修改注释。
我试图在ObjectMapper
类中找到一个选项来覆盖这些注释,但没有成功。
ObjectMapper serializer = new ObjectMapper();
serializer.deactivateDefaultTyping();
有什么想法吗?
实现这一点的最佳方法是通过mixin。
这里有一个例子:
public class TestMe2 {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper mapper1 = new ObjectMapper();
System.out.println(mapper1.writeValueAsString(new Rabbit()));
ObjectMapper mapper2 = new ObjectMapper();
mapper2.addMixIn(Animal.class, NoTypes.class);
System.out.println(mapper2.writeValueAsString(new Rabbit()));
}
static class Rabbit extends Animal {
}
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "class")
abstract static class Animal {
public String name = "example";
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
class NoTypes {
}
}