【问题标题】:Jackson XmlMapper generates wrong XML entries orderJackson XmlMapper 生成错误的 XML 条目顺序
【发布时间】:2023-03-10 11:02:01
【问题描述】:

我在使用 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。

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

谢谢你和最好的问候

【问题讨论】:

  • DGSIMOClass 可能应该在 JsonPropertyOrder 标记中使用而不是 IMOLabels,因为它是您的属性名称。你能检查一下这是否能解决你的问题吗?
  • 对!就是这样。非常感谢!
  • 不客气!我已经为这个问题添加了答案。请接受它:)
  • 完成。我只是无法投票。我的声望点太少了:-)

标签: java xml jackson


【解决方案1】:

在您的 JsonPropertyOrder 注释中,该属性称为“DGSIMOClass”,而不是“IMOLabels”。你应该把它换成正确的名字。

【讨论】:

    猜你喜欢
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 2012-09-28
    相关资源
    最近更新 更多