在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时它会导致问题。
答案 0 :(得分:0)
正在生成Integer
类型,因为您已设置minOccurs=0
。
整数是可以为空的,其中int不是。
删除此属性,它应生成为int。
<xs:element name="groups" type="xs:int">
</xs:element>