当前位置: 首页 > 知识库问答 >
问题:

Jackson XML将单个XML标记反序列化为对象

堵琨
2023-03-14

我想反序列化这个xml标记:

<source>Test</source>

转换成一个对象(某个java类)。

我有下一堂课:

public class SomeXml{
  private String source;
}

我用Jackson XML这样做反序列化:

XmlMapper mapper = new XmlMapper();
SomeXml data = mapper.readValue("<source>Test</source>", SomeXml.class);
System.out.println(data);

但是它给了我下一个错误:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: unrecognized field “” (class com.test.SomeXml), 未标记为可忽略(一个已知属性: “source”]) at [Source: (StringReader);行: 1, 列: 31] (通过引用链: com.test.SomeXml[“”])

那么,如何将这个xml标签反序列化成object/pojo呢?

感谢任何帮助!!

共有1个答案

阴鸿才
2023-03-14

XML它是一个字符串,而不是一个对象(对于杰克逊)。相反,您应该用包含该字符串(这将是属性)的另一个标签(这将是您的对象)包围它

XmlMapper mapper = new XmlMapper();
SomeXml data = mapper.readValue("<myObj><source>Test</source></myObj>", SomeXml.class);
System.out.println(data);

为了验证我之前所说的,您可以检查一下这段代码是否工作正常:

XmlMapper mapper = new XmlMapper();
String data = mapper.readValue("<source>Test</source>", String.class);
System.out.println(data);
 类似资料:
  • 我在尝试“反序列化”对象时遇到以下错误: 我需要能够使用这个XStream库序列化/反序列化对象,甚至是那些没有参数构造函数的对象。

  • 我想序列化一些XML。我的代码运行正常,但序列化不成功,对象为空,而不是填充数据。该值只是类型值:{OrangeCdToCollectorz.OrangeCd}。我怀疑我的阶级定义。以下是我正在序列化的类: 这是我的代码,尝试使用几种众所周知的技术对相同的XML进行反序列化,无论是作为字符串const还是来自文件: 以下是源XML的示例

  • 问题内容: 我在使用AJAX访问的Java服务器应用程序中有一个字符串。它看起来像以下内容: 当从服务器提取字符串时,是否有一种简单的方法可以将其转换为活动的JavaScript对象(或数组)?还是我必须手动拆分字符串并手动构建对象? 问题答案: 现代浏览器支持。 在不浏览器,您可以包括在库中。

  • 问题内容: 我需要将Objective- C对象序列化和反序列化为JSON以存储在CouchDB中。人们是否有通用解决方案最佳实践的示例代码?我看了几个JSON框架,它们在NSDictionary / NSArray级别停止了。即,许多框架会将NSDictionary / NSArray序列化和反序列化为JSON。但是我仍然要做将NSDictionary转换为Objective-C对象的工作。 为

  • 问题内容: 在C#中,我已经通过使用如下代码成功将匿名对象序列化为JSON … 但是,我以后想要做的是将JSON字符串反序列化为一个匿名对象。像这样 但是serializer.Deserialize()方法需要第二个参数,该参数是将反序列化到的对象的类型。 我试过了 但这会产生错误: 没有为’<> f__AnonymousType0`2 [[System.Int32,mscorlib,Versio