【发布时间】:2019-04-10 07:24:06
【问题描述】:
第一次在stackoverflow上发帖,而不是寻求帮助!
我有一个 XML 块,我正试图将其反序列化为一个简单的 Java 对象。
我有以下 XML 块:
<library>
<book index="654" name="Harry Potter" price="£11.99" rating="5"/>
<book index="7893" name="Ready Player One" price="£16.99" rating="5"/>
<book index="433" name="Piers Morgan; Don't You Know Who I Am?" price="£8.99" rating="2"/>
</library>
然后我尝试将其转换为简单的 POJO:
@JacksonXmlRootElement(localName = "library")
public class Library {
//This will be the breaking point :'(
List<Book> bookList = new ArrayList<>();
}
public class Book {
@JacksonXmlProperty(isAttribute = true)
Integer index;
@JacksonXmlProperty(isAttribute = true)
String name;
@JacksonXmlProperty(isAttribute = true)
String price;
@JacksonXmlProperty(isAttribute = true)
Integer rating;
}
我正在努力寻找在 Jacksons 文档中使用的正确注释。我敢肯定这一定是一个非常简单的改变,就像往常一样!
我选择 Jackson 而不是 JAXB,因为 Jackson 是较新的库,而且我知道与 JAXB 相关的一些速度问题。
无论我在这里怎么努力,我总是卡在书单上,但没有条目。任何人都可以帮忙吗?有人会建议我看看 JAXB 而不是 Jackson 吗?
【问题讨论】:
-
试试这个:stackoverflow.com/questions/25556624/… - 顺便说一句:JAXB 并没有那么糟糕,如果使用得当也不会很慢。更新并不意味着更好...
-
如果我处理的是 XML 文档的属性,那会起作用,但我只处理标记中的属性。我会试试上面的。
-
没有像 XML 文档的“属性”这样的东西。只有元素和元素的属性。无论 JAXB、Jackson 还是其他任何东西,它们都将 POJO 作为属性转换为属性。更仔细地阅读给定的链接...您必须将 POJO
List<Book> bookList属性定义为根元素的元素 - 在您的情况下为library。
标签: java xml jackson jaxb jackson-databind