小编Mar*_*old的帖子

Jackson XML 注释:从具有属性的 XML 元素中提取单个字符串值

我正在使用 Jackson XML 注释将 XML 文档从外部 API 转换为 POJO。XML 中的一个元素给我带来了一些麻烦。大多数元素没有属性,只有一个文本值,例如:

<title>Title Here</title>
Run Code Online (Sandbox Code Playgroud)

不过,我在使用一个元素时遇到了一些问题,它有一个属性,如下所示:

<urgency id="UrgCaution">Caution</urgency>
Run Code Online (Sandbox Code Playgroud)

我只想提取文本值“注意”并将其存储在字符串中。我最初在我的 Java 类中尝试过这种方式:

public class Item {
    @JacksonXmlProperty(localName = "urgency")
    private String urgency;
}
Run Code Online (Sandbox Code Playgroud)

但这会导致以下错误:

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not construct 
instance of Item: no String-argument constructor/factory method to deserialize from 
String value ('Security')
at [Source: java.io.ByteArrayInputStream@328ff654; line: 40, column: 21] 
Run Code Online (Sandbox Code Playgroud)

“Security”是稍后出现在文档中的称为“tags”的 xml 属性的文本。

我尝试进行以下更改,这消除了异常,但导致我在 POJO 中获得了一个空值来表示紧急性。

public class Item {
    @JacksonXmlProperty(localName = "urgency")
    @JacksonXmlText
    private String urgency;
}
Run Code Online (Sandbox Code Playgroud)

我觉得我在这里遗漏了一些明显的东西。使用 Jackson 将此元素的文本转换为 POJO 上的 String …

java xml pojo jackson

3
推荐指数
1
解决办法
8318
查看次数

标签 统计

jackson ×1

java ×1

pojo ×1

xml ×1