微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JsonPropertyOrder无法正确订购

如何解决JsonPropertyOrder无法正确订购

因此,从标题中可以看到,我的@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"})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。