问题描述
我在使用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”。您应该将其切换为正确的名称。