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

huangapple go评论106阅读模式
英文:

Jackson XmlMapper generates wrong XML entries order

问题

  1. 使用Java JacksonXmlMapper生成XML字符串时我遇到了一个问题它生成的XML字符串中条目的顺序是错误的尽管我使用了@JsonPropertyOrder并且类内部的成员也是需要的顺序
  2. 请参考我的代码
  3. @JsonPropertyOrder({ "craneNumber", "moveType", "reference", "unitNumber", "ISOCode", "IMOLabels", "seal", "doorDirection" })
  4. public class OcrDataResultUnit {
  5. @JacksonXmlElementWrapper(localName="unit")
  6. private String craneNumber;
  7. private String moveType;
  8. private String reference;
  9. private String unitNumber;
  10. @JsonProperty("ISOCode")
  11. private String isoCode;
  12. @JacksonXmlElementWrapper(localName="IMOLabels")
  13. @JsonProperty("DGSIMOClass")
  14. private List<String> imoLabels = new ArrayList<>();
  15. @JsonProperty("seal")
  16. private String seal;
  17. @JsonProperty("doorDirection")
  18. private String doorDirection;
  19. // 所有的getter和setter...
  20. Usage:
  21. XmlMapper mapper = new XmlMapper();
  22. String msgXml = mapper.writeValueAsString(this);
  23. Result:
  24. <unit>
  25. <craneNumber>QC01</craneNumber>
  26. <moveType>D</moveType>
  27. <reference>12345678901234567890123456789012</reference>
  28. <unitNumber>ABCD00001234</unitNumber>
  29. <ISOCode>22G1</ISOCode>
  30. <seal>Y</seal>
  31. <doorDirection>H</doorDirection>
  32. <IMOLabels>
  33. <DGSIMOClass>1.5</DGSIMOClass>
  34. <DGSIMOClass>2.1</DGSIMOClass>
  35. </IMOLabels>
  36. </unit>
  37. * 在最后两个成员上不加 @JsonProperty 我得到了相同的结果这是一个尝试
  38. * 这个结构是更大的XML结构的一部分
  39. * 同样将 @JsonProperty 替换为 @JacksonXmlProperty结果相同
  40. * 据我所见@JsonPropertyOrder XML中也是正确使用的
  41. 是否有人有想法
  42. 也许我只是疏忽了 - 实际上我希望是这样的 :-)
  43. 谢谢并致以最诚挚的问候
英文:

I have an issue with generating a XML string with the Java Jackson XmlMapper: It generates the wrong order of entries in the XML string, nevertheless I use @JsonPropertyOrder and the members are in the needed order inside the class.
Please see my code:

  1. @JsonPropertyOrder({ &quot;craneNumber&quot;, &quot;moveType&quot;, &quot;reference&quot;, &quot;unitNumber&quot;, &quot;ISOCode&quot;, &quot;IMOLabels&quot;, &quot;seal&quot;, &quot;doorDirection&quot; })
  2. public class OcrDataResultUnit {
  3. @JacksonXmlElementWrapper(localName=&quot;unit&quot;)
  4. private String craneNumber;
  5. private String moveType;
  6. private String reference;
  7. private String unitNumber;
  8. @JsonProperty(&quot;ISOCode&quot;)
  9. private String isoCode;
  10. @JacksonXmlElementWrapper(localName=&quot;IMOLabels&quot;)
  11. @JsonProperty(&quot;DGSIMOClass&quot;)
  12. private List&lt;String&gt; imoLabels = new ArrayList&lt;&gt;();
  13. @JsonProperty(&quot;seal&quot;)
  14. private String seal;
  15. @JsonProperty(&quot;doorDirection&quot;)
  16. private String doorDirection;
  17. // all getters and setters ...

Usage:

  1. XmlMapper mapper = new XmlMapper();
  2. String msgXml = mapper.writeValueAsString(this);

Result:

  1. &lt;unit&gt;
  2. &lt;craneNumber&gt;QC01&lt;/craneNumber&gt;
  3. &lt;moveType&gt;D&lt;/moveType&gt;
  4. &lt;reference&gt;12345678901234567890123456789012&lt;/reference&gt;
  5. &lt;unitNumber&gt;ABCD00001234&lt;/unitNumber&gt;
  6. &lt;ISOCode&gt;22G1&lt;/ISOCode&gt;
  7. &lt;seal&gt;Y&lt;/seal&gt;
  8. &lt;doorDirection&gt;H&lt;/doorDirection&gt;
  9. &lt;IMOLabels&gt;
  10. &lt;DGSIMOClass&gt;1.5&lt;/DGSIMOClass&gt;
  11. &lt;DGSIMOClass&gt;2.1&lt;/DGSIMOClass&gt;
  12. &lt;/IMOLabels&gt;
  13. &lt;/unit&gt;
  • I get the same result without the @JsonProperty on the last to members. That was a try.
  • The structure is part of a bigger XML structure.
  • Also replaced @JsonProperty with @JacksonXmlProperty: Same result.
  • As far as I see @JsonPropertyOrder is correct to be used for XML as well.

Does anybody have an idea?
Maybe I am just blind - actually I hope so Jackson XmlMapper 生成的 XML 条目顺序错误

Thank you and best regards

答案1

得分: 0

在您的JsonPropertyOrder注解中,属性被称为"DGSIMOClass",而不是"IMOLabels"。您应该将其替换为正确的名称。

英文:

In your JsonPropertyOrder annotation, the property is called "DGSIMOClass", not "IMOLabels". You should switch it out for the correct name.

huangapple
  • 本文由 发表于 2020年9月4日 17:58:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/63738913.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定