【发布时间】:2014-11-11 17:58:09
【问题描述】:
我希望有人能指出我在逃避什么。这是我第一次尝试反序列化 XML。这是我的问题的简化版。
谢谢,
哈罗德
问题在 Problem.java 中演示
import java.io.File;
import java.io.IOException;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
public class Problem {
public Problem() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args)
{
Problem problem = new Problem();
problem.demonstrate();
}
@JacksonXmlRootElement(localName = "myroot")
public class Myroot {
@JacksonXmlElementWrapper(useWrapping = false)
@JacksonXmlProperty(localName = "products")
@JsonProperty("products")
public Products[] products;
@JsonCreator public Myroot() {}
public Products[] getProducts() {
return products;
}
public void setProducts(Products[] products) {
this.products = products;
}
}
public class Products {
@JsonCreator public Products() {}
@JacksonXmlProperty(localName = "foo")
public String foo = "hi";
public String getFoo() {
return foo;
}
public void setFoo(String foo) {
this.foo = foo;
}
}
public void demonstrate()
{
Products products = new Products();
Products[] productsList = new Products[1];
productsList[0] = products;
try {
Myroot myrootOut= new Myroot();
myrootOut.setProducts(productsList);
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.writeValue(new File("J:\\stuff.xml"), myrootOut);
Myroot migrationCompatibility = xmlMapper.readValue(new File("J:\\stuff.xml"), Myroot.class);
System.out.println(migrationCompatibility);
} catch (IOException e) {
e.printStackTrace();
}
}
}
序列化按预期工作并按预期生成 xml。
<myroot><products><foo>hi</foo></products></myroot>
但是,上述反序列化的补充调用会导致异常。它似乎无法识别标签,但我不知道为什么。
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: 无法识别的字段“产品”(....问题),未标记为可忽略 (0 个已知属性:])在 [来源:J:\stuff.xml;行:1,列: 19](通过引用链:....Problem["products"])
【问题讨论】:
-
抱歉,我生成的 XML 没有出现在我的原始帖子中。 "
"hi -
您可以随时编辑您的帖子。使用
{}按钮包装选定的代码或标记。 -
您使用的是哪个版本的
jackson-xml-bind库? -
这对我来说非常适合 2.4.2。
-
谢谢。我正在使用 jackson-databind-2.3.3.jar 和 Jackson-dataformat-xml-2.3.3.jar。
标签: java xml serialization jackson pojo