杰克逊:从XSD生成杰克逊类

18

类似于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;

在Jackson中是否可能创建类似的类,即根据XML元素名称识别类型。


对于谷歌搜索者:尽管Jackson可以处理JAXB注释,但@XmlElements的支持不太好。有关详细信息,请参见https://github.com/FasterXML/jackson-modules-base/issues/127。 - koppor
1个回答

0
Jackson可以自动添加此类信息(请参见@JsonTypeInfo)。例如:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY)
protected List<Animal> animal;

或者使用@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; 

这个链接很有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接