gpt4 book ai didi

java - 使用 Jackson 序列化具有名为 value 的属性的 XML 元素

转载 作者:行者123 更新时间:2023-12-02 01:39:53 24 4
gpt4 key购买 nike

我正在尝试使用以下元素反序列化/序列化 xml 内容。

<?xml version="1.0" encoding="utf-8" ?>
<confirmationConditions>
<condition type="NM-GD" value="something">no modification of guest details</condition>
</confirmationConditions>

如何正确创建带有 jackson 注释的 java beans 以正确解析它。我尝试过使用 JAXB 注释,但 jackson 失败说它不能具有 value 字段。使用下面的 java beans,我收到以下错误。

public class Condition
{
@JacksonXmlProperty( isAttribute = true, localName = "type" )
private String type;
@JacksonXmlProperty( isAttribute = true, localName = "value" )
private String value;
private String text;
}

错误

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "" (class Condition), not marked as ignorable (3 known properties: "value", "type", "text"])
at [Source: (File); line: 3, column: 73] (through reference chain: ConfirmationConditions["condition"]->Condition[""])

基本上我想要的是将元素内容映射到 text 字段。我无法控制 xml,因此更改它对我来说不起作用。

最佳答案

您需要在这里添加@JacksonXmlText

class Condition {
@JacksonXmlProperty(isAttribute = true)
private String type;
@JacksonXmlProperty(isAttribute = true)
private String value;
@JacksonXmlText
private String text;

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

public String getText() {
return text;
}

public void setText(String text) {
this.text = text;
}
}

并这样解析:

    JacksonXmlModule module = new JacksonXmlModule();
module.setDefaultUseWrapper(false);
XmlMapper xmlMapper = new XmlMapper(module);

xmlMapper.readValue(
"<condition type=\"NM-GD\" value=\"something\">no modification of guest details</condition>", Condition.class);

关于java - 使用 Jackson 序列化具有名为 value 的属性的 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54590156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com