Dam*_*men 2 java jackson fasterxml
我有以下XML,我想反序列化为Java POJO.
<testdata>
<foo>
<bar>
<![CDATA[MESSAGE1]]>
</bar>
<bar>
<![CDATA[MESSAGE2]]>
</bar>
<bar>
<![CDATA[MESSAGE3]]>
</bar>
</foo>
</testdata>
Run Code Online (Sandbox Code Playgroud)
我有以下Java类
public class TestData {
@JacksonXmlProperty(localName = "foo")
private Foo foo;
public Foo getFoo() {
return foo;
}
public void setFoo(Foo foo) {
this.foo = foo;
}
}
Run Code Online (Sandbox Code Playgroud)
我有另一个类,如下
public class Foo {
@JacksonXmlProperty(localName = "bar")
@JacksonXmlCData
private List<String> barList;
public List<String> getBarList() {
return barList;
}
public void setBarList(List<String> barList) {
this.barList = barList;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我使用下面的类运行代码时,我得到一个异常
private void readXml() throws FileNotFoundException, IOException {
File file = new File("/Users/temp.xml");
XmlMapper xmlMapper = new XmlMapper();
String xml = GeneralUtils.inputStreamToString(new FileInputStream(file));
TestData testData = xmlMapper.readValue(xml, TestData.class);
System.out.println(testData.getFoo()
.getBarList());
}
Run Code Online (Sandbox Code Playgroud)
线程"main"中的异常com.fasterxml.jackson.databind.exc.MismatchedInputException:无法反序列java.util.ArrayList化VALUE_STRING标记之外的实例
如何将bar元素转换为List?我尝试了很多东西,但我不断得到一些或其他错误
您需要指明这<bar>是您的String邮件集合的包装元素:
这应该适用于你的Foo班级:
@JacksonXmlProperty(localName = "bar")
@JacksonXmlCData
@JacksonXmlElementWrapper(useWrapping = false)
private List<String> barList;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2730 次 |
| 最近记录: |