Jackson 禁用类型注释的输入 类
Jackson disable typing for typed annotated classes
假设我有以下 classes:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "class")
@JsonSubTypes({ @JsonSubTypes.Type(value = Rabbit.class) })
abstract class Animal {
}
class Rabbit {
}
序列化时我通常需要类型,因此需要注释。
我有一个用例,我想序列化但没有类型 属性。我不想使用 DTO。我无法修改注释。
我试图在 ObjectMapper
class 中找到一个选项来覆盖这些注释,但没有成功。
ObjectMapper serializer = new ObjectMapper();
serializer.deactivateDefaultTyping();
有什么想法吗?
实现此目的的最佳方法是通过混合。
这是一个例子:
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 {
}
}
假设我有以下 classes:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "class")
@JsonSubTypes({ @JsonSubTypes.Type(value = Rabbit.class) })
abstract class Animal {
}
class Rabbit {
}
序列化时我通常需要类型,因此需要注释。 我有一个用例,我想序列化但没有类型 属性。我不想使用 DTO。我无法修改注释。
我试图在 ObjectMapper
class 中找到一个选项来覆盖这些注释,但没有成功。
ObjectMapper serializer = new ObjectMapper();
serializer.deactivateDefaultTyping();
有什么想法吗?
实现此目的的最佳方法是通过混合。
这是一个例子:
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 {
}
}