4
我有對象具有List成員的鏈接,而鏈接僅具有屬性但解析列表有錯誤 - 它被創建爲空。
在下面的測試中links.getLinks()
返回空列表。有任何想法嗎?
XML例如:無法解析具有屬性的元素列表
<links>
<link x="1" y="2" />
<link x="3" y="4" />
</links>
Java的
@JacksonXmlRootElement(localName="links")
public class Links extends BaseAmebaElement {
@JacksonXmlProperty(localName="link")
//@JacksonXmlElementWrapper(localName="link")
private Collection<Link> links;
public Collection<Link> getLinks() {
return links;
}
public void setLinks(Collection<Link> links) {
this.links = links;
}
}
...
@JacksonXmlRootElement(localName="link")
public class Link {
@JacksonXmlProperty(localName="x", isAttribute=true)
private String href;
@JacksonXmlProperty(localName="y", isAttribute=true)
private String rel;
...
XmlMapper xmlMapper = new XmlMapper();
try {
Links links = xmlMapper.readValue(input, Links.class);
assertNotNull(links);
assertNotNull(links.getLinks());
assertEquals(2, links.getLinks().size());
} catch (Throwable e) {
fail(e.getMessage());
}
確保您使用的是最新版本(2.1.4)。您的代碼和註釋對我來說看起來是正確的。 – StaxMan 2013-03-12 20:31:36
@StaxMan是的,我正在使用2.1.4(com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.1.4)。 – longhua 2013-03-13 01:13:05
我嘗試過同樣的事情......在不同版本的嘗試中,我也看到了這個問題 - 第一個元素在列表中始終爲空。如果我有5個元素 - 第一個是空的,其他4個在裏面。我還檢查了元素是否存在問題 - 但是否,即使所有元素中的相同內容都使第一個元素爲null(因爲這僅用於練習和POC - 我的最終和快速解決方法是使用XStream 。但是,使用XStream的缺點是你必須解析所有數據,它對模型的變化非常嚴格和敏感。 – urir 2013-03-13 05:54:12