【问题标题】:JsonPropertyOrder not ordering correctlyJsonPropertyOrder 未正确排序
【发布时间】:2020-09-10 22:02:58
【问题描述】:

所以你可以从标题中看到我的@JsonPropertyOrder 没有按我想要的方式排序......这是我的课程(见下面的代码),除了 zpp 属性外,所有的东西都很好,它介于“spravce”和“齐斯卡特莱”。我试图重命名它重新排序它并且它完全被忽略了。谢谢你的所有答案:)

(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 spring xml-serialization jackson-dataformat-xml


    【解决方案1】:

    使用 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>
    

    【讨论】:

      【解决方案2】:

      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"})
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-13
        • 1970-01-01
        • 2018-08-19
        • 2015-04-14
        • 2018-12-06
        相关资源
        最近更新 更多