【发布时间】: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,因为它是您的属性名称。你能检查一下这是否能解决你的问题吗?
-
对!就是这样。非常感谢!
-
不客气!我已经为这个问题添加了答案。请接受它:)
-
完成。我只是无法投票。我的声望点太少了:-)