Jackson:从 XSD 生成 Jackson 类

Jackson: Generate Jackson classes from XSD

提问人:dinup24 提问时间:4/16/2015 更新时间:10/19/2023 访问量:17390

问:

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

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

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

是否可以在杰克逊创建类似的类。即,根据 XML 元素名称来标识类型。

JAVA XML XSD JAXB 杰克逊

评论

0赞 koppor 1/6/2023
对于谷歌用户:虽然 Jackson 可以处理 JAXB 注释,但@XmlElements没有得到很好的支持。有关详细信息,请参阅 github.com/FasterXML/jackson-modules-base/issues/127

答:

0赞 Alexander Kashpirovsky 9/16/2022 #1

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; 

链接很有用。