Jackson:从XSD生成Jackson类

din*_*p24 5 java xml xsd jaxb jackson

类似于JAXB生成给定XSD的JAXB类,Jackson提供了任何实用程序来从XSD或JSON生成Jackson类。

JAXB类生成器已经为定义的XSD模式生成了一组类。例如,对于多态类型,JAXB具有以下注释,用于基于XML元素名称来标识名称。

@XmlElements({
    @XmlElement(name = "Dog", type = Dog.class),
    @XmlElement(name = "Cat", type = Cat.class)
})
protected List<Animal> animal;
Run Code Online (Sandbox Code Playgroud)

是否可以在Jackson中创建类似的类。即基于XML元素名称来标识类型。

Ale*_*sky 0

Jackson 可以自动添加此类信息(请参阅@JsonTypeInfo)。例如:

@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY)
protected List<Animal> animal;
Run Code Online (Sandbox Code Playgroud)

或者将该注释与@JsonSubTypes一起使用:

@JsonTypeInfo(
      use = JsonTypeInfo.Id.NAME, 
      include = As.PROPERTY, 
      property = "type")
    @JsonSubTypes({
        @JsonSubTypes.Type(value = Dog.class, name = "Dog"),
        @JsonSubTypes.Type(value = Cat.class, name = "Cat")
    })
protected List<Animal> animal; 
Run Code Online (Sandbox Code Playgroud)

这个链接很有用。