Jackson 上 XML 的序列化顺序注释不起作用
Serialising order annotations for XML on Jackson does not work
我已经用谷歌搜索了将近一天的时间并尝试了几个修复程序(包括来自 Whosebug 的 4 或 5 个),但其中 none 成功了。我有这个带有注释的 POJO 可以与 Jackson 2.10.2
一起使用
@JacksonXmlRootElement(localName = "request")
public class PdfExportQuery {
@JacksonXmlProperty(localName = "user", isAttribute = true)
private String username;
@JacksonXmlProperty(localName = "pwd", isAttribute = true)
private String password;
@JacksonXmlProperty(localName = "putdoc")
private XmlPutDoc putdoc;
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "import", isAttribute = true)
private List<XmlPdfImport> imports;
... getters and setters
}
我使用这个 POJO 为一些外部请求创建 XML。一切正常,但现在我需要重新排序结果 XML 中的字段,但似乎没有任何效果。
我首先尝试将其设置为 class 级别:
@JsonPropertyOrder({"putdoc"}) (Using only the field and localName)
or
@JsonPropertyOrder({"putdoc", "user", "pwd", "import"}) (Using all fields and localName)
or
@JsonPropertyOrder({"putdoc", "username", "password", "imports"}) (Using all fields and the java property name)
然后我尝试设置每个字段的顺序:
@JsonProperty(1)
or
@JsonProperty(value="putdoc", index = 1)
我还尝试在所有字段上设置 JsonProperty,并且只在我有兴趣首先出现的字段上设置。
我也试过:
- 删除所有@JacksonXmlProperty 并在每个字段上仅保留@JsonProperty
- 将 class 中的 @JsonPropertyOrder 和每个字段上的 @JsonProperty 相结合
- 检查是否所有注释都从 com.fasterxml.jackson.annotation 包中导入
无论我做什么,生成的 XML 总是具有相同的顺序,所有的顺序注释似乎都被完全忽略了。
我找不到让它与注释一起工作的方法。我需要为 class 实现自定义序列化程序,只是为了更改顺序。
我已经用谷歌搜索了将近一天的时间并尝试了几个修复程序(包括来自 Whosebug 的 4 或 5 个),但其中 none 成功了。我有这个带有注释的 POJO 可以与 Jackson 2.10.2
一起使用@JacksonXmlRootElement(localName = "request")
public class PdfExportQuery {
@JacksonXmlProperty(localName = "user", isAttribute = true)
private String username;
@JacksonXmlProperty(localName = "pwd", isAttribute = true)
private String password;
@JacksonXmlProperty(localName = "putdoc")
private XmlPutDoc putdoc;
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "import", isAttribute = true)
private List<XmlPdfImport> imports;
... getters and setters
}
我使用这个 POJO 为一些外部请求创建 XML。一切正常,但现在我需要重新排序结果 XML 中的字段,但似乎没有任何效果。
我首先尝试将其设置为 class 级别:
@JsonPropertyOrder({"putdoc"}) (Using only the field and localName)
or
@JsonPropertyOrder({"putdoc", "user", "pwd", "import"}) (Using all fields and localName)
or
@JsonPropertyOrder({"putdoc", "username", "password", "imports"}) (Using all fields and the java property name)
然后我尝试设置每个字段的顺序:
@JsonProperty(1)
or
@JsonProperty(value="putdoc", index = 1)
我还尝试在所有字段上设置 JsonProperty,并且只在我有兴趣首先出现的字段上设置。
我也试过:
- 删除所有@JacksonXmlProperty 并在每个字段上仅保留@JsonProperty
- 将 class 中的 @JsonPropertyOrder 和每个字段上的 @JsonProperty 相结合
- 检查是否所有注释都从 com.fasterxml.jackson.annotation 包中导入
无论我做什么,生成的 XML 总是具有相同的顺序,所有的顺序注释似乎都被完全忽略了。
我找不到让它与注释一起工作的方法。我需要为 class 实现自定义序列化程序,只是为了更改顺序。