JAXB生成后错误的注释类型

时间:2016-06-24 15:49:48

标签: java json xml jaxb

在JAXB生成之后,我有一个包含错误类型的类,我的int数组,它用Integer类型而不是int []注释它。

这是我的XSD:

<complexType name="GenericChartTask">
    <sequence>
        <element name="clients" type="struct:IDNameSiteServiceImageIndex"
            maxOccurs="unbounded" minOccurs="0">
        </element>
        <element name="commonTasks" type="struct:NameAndID"
            maxOccurs="unbounded" minOccurs="0">
        </element>
        <element name="groups" type="int" maxOccurs="unbounded"
            minOccurs="0"></element>
        <element name="siteServices" type="struct:SiteService"
            maxOccurs="unbounded" minOccurs="0">
        </element>
    </sequence>
</complexType>

这是我一代又一代所得到的:

public class GenericChartTask {

    @XmlElement(namespace = "http://american-data.com/ecs/struct")
    protected ad.ecs.struct.IDNameSiteServiceImageIndex[] clients;
    @XmlElement(namespace = "http://american-data.com/ecs/struct")
    protected ad.ecs.struct.NameAndID[] commonTasks;
    @XmlElement(namespace = "http://american-data.com/ecs/struct", type = Integer.class)
    protected int[] groups;
    @XmlElement(namespace = "http://american-data.com/ecs/struct")
    protected ad.ecs.struct.SiteService[] siteServices;
    ...

我还有一个生成数组而不是列表的绑定,因为JAXB不想生成合法bean(它会删除列表的setter)。

<jxb:bindings node="//xs:element[@name='groups']">
    <jxb:property collectionType="indexed" />
</jxb:bindings>

我的问题是,有没有办法摆脱那个错误的部分 type = Integer.class ?因为当我想为这个对象反序列化我的JSON时它会导致问题。

1 个答案:

答案 0 :(得分:0)

正在生成Integer类型,因为您已设置minOccurs=0

整数是可以为空的,其中int不是。

删除此属性,它应生成为int。

<xs:element name="groups" type="xs:int">
</xs:element>