Jackson XmlMapper生成错误的XML条目顺序

问题描述

我在使用Java Jackson XmlMapper生成XML字符串时遇到问题:它会在XML字符串中生成错误的条目顺序,但是我使用@JsonPropertyOrder,并且成员在类内的顺序是必需的。 请查看我的代码

@JsonPropertyOrder({ "craneNumber","moveType","reference","unitNumber","ISOCode","IMOLabels","seal","doorDirection" })
public class OcrDataResultUnit {
    @JacksonXmlElementWrapper(localName="unit")
    private String craneNumber;
    private String moveType;
    private String reference;
    private String unitNumber;
    @JsonProperty("ISOCode")
    private String isoCode;
    @JacksonXmlElementWrapper(localName="IMOLabels")
    @JsonProperty("DGSIMOClass")
    private List<String> imoLabels = new ArrayList<>();
    @JsonProperty("seal")
    private String seal;
    @JsonProperty("doorDirection")
    private String doorDirection;

    // all getters and setters ...

用法

    XmlMapper mapper = new XmlMapper();
    String msgXml = mapper.writeValueAsstring(this);

结果:

<unit>
<craneNumber>QC01</craneNumber>
<moveType>D</moveType>
<reference>12345678901234567890123456789012</reference>
<unitNumber>ABCD00001234</unitNumber>
<ISOCode>22G1</ISOCode>
<seal>Y</seal>
<doorDirection>H</doorDirection>
<IMOLabels>
<DGSIMOClass>1.5</DGSIMOClass>
<DGSIMOClass>2.1</DGSIMOClass>
</IMOLabels>
</unit>
  • 我得到的结果与成员最后没有@JsonProperty的结果相同。那是一个尝试。
  • 该结构是更大的XML结构的一部分。
  • 也将@JsonProperty替换为@JacksonXmlProperty:结果相同。
  • 据我所知,@ JsonPropertyOrder也正确用于XML。

有人有想法吗? 也许我只是盲目的-实际上我希望如此:-)

感谢您和最诚挚的问候

解决方法

在您的JsonPropertyOrder批注中,该属性称为“ DGSIMOClass”,而不是“ IMOLabels”。您应该将其切换为正确的名称。