问题描述
因此,从标题中可以看到,我的@JsonPropertyOrder并未按我的意愿进行排序...这是我的课程(请参见下面的代码),除zpp属性外,其他所有东西都按顺序排列良好,它介于“ spravce”和“ ziskatele”。我试图重命名它,将其重新排序,并完全忽略了。谢谢您的所有回答:)
(JacksonXML 2.9.8版)
@JacksonXmlRootElement(localName = "xmlroot")
@JsonPropertyOrder({"cnt-unik-id","kod-produktu","frekvence","datum-sjednani","pocatek","konec","spravce","ziskatele","objekty-unik-id","udaje","objekty-all","adresy","zpp"})
public class ContractDetail{
@JacksonXmlProperty(localName = "zpp")
private Integer zpplID;
@JacksonXmlProperty(localName = "cnt-unik-id")
private Integer id;
@JacksonXmlProperty(localName = "kod-produktu")
private Item product;
@JacksonXmlProperty(localName = "spravce")
private Item administrator;
@JacksonXmlElementWrapper(localName = "ziskatele")
@JacksonXmlProperty(localName = "xml-ziskatel")
private List<Customer> customers;
@JacksonXmlProperty(localName = "frekvence")
private Item frequency;
@JacksonXmlProperty(localName = "datum-sjednani")
private Item createdAt;
@JacksonXmlProperty(localName = "pocatek")
private Item startDate;
@JacksonXmlProperty(localName = "konec")
private Item endDate;
@JacksonXmlElementWrapper(localName = "objekty-unik-id")
@JacksonXmlProperty(localName = "int")
private List<Integer> vehicle;
@JacksonXmlProperty(localName = "xml-hodnota")
@JacksonXmlElementWrapper(localName = "udaje")
private List<Item> values;
@JacksonXmlProperty(localName = "xml-objekt")
@JacksonXmlElementWrapper(localName = "objekty-all")
private List<ObjectItem> objects;
@JacksonXmlElementWrapper(localName = "adresy")
@JacksonXmlProperty(localName = "xml-adresa")
private List<AddressItem> address;
//getters setters contructors stuff
}
解决方法
使用Java字段名称代替XML元素名称。
例如,使用您的ContractDetail
类的简化版本:
使用此:
@JsonPropertyOrder({"id","vehicle","zpplID"})
生成此:
<xmlroot>
<cnt-unik-id>123</cnt-unik-id>
<objekty-unik-id>
<int>678</int>
<int>789</int>
</objekty-unik-id>
<zpplID>456</zpplID>
</xmlroot>
并使用它:
@JsonPropertyOrder({"vehicle","zpplID","id"})
生成此:
<xmlroot>
<objekty-unik-id>
<int>678</int>
<int>789</int>
</objekty-unik-id>
<zpplID>456</zpplID>
<cnt-unik-id>123</cnt-unik-id>
</xmlroot>
,
Soo @andrewjames的答案有效,但是如果有人仍然需要/想要使用xml元素名称,那么我想出的解决方案如下:
@JsonPropertyOrder({"cnt-unik-id","kod-produktu","frekvence","datum-sjednani","pocatek","konec","spravce","ziskatele","objekty-unik-id","int","udaje","xml-hodnota","objekty-all","xml-objekt","adresy","xml-adresa","zpp"})