【发布时间】:2016-04-15 13:50:14
【问题描述】:
我从外部系统提供了一些 XML,我需要对其进行解析。其中一个值包含杰克逊遇到问题的一些 HTML(未编码):
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token
XML 如下所示:
<lookup_info>-- [Snipped] --------------<BR/>
Some more snipped data.<BR/>
<BR/>
And some more snipped data..<BR/>
<BR/>
And even more snipped data...</lookup_info>
我的代码适用于除此之外的所有字段,我的 pojo 代码如下所示:
@JacksonXmlProperty(localName = "customer_name")
private String customerName;
@JacksonXmlProperty(localName = "email")
private String email;
@JacksonXmlProperty(localName = "lookup_info")
private String lookupInfo;
如果我将lookupInfo 更改为Object,我可以看到Jackson 将原始数据映射到LinkedHashMap...只有一个条目,{BR=null}
如何强制 Jackson 将原始值序列化为 String?我试过@JacksonXmlText,结果lookupInfo变成null。
【问题讨论】:
-
您找到解决方案了吗?我面临着一个类似的问题。就我而言,我想将子节点(xml)反序列化为原始 xml...
-
@RomanAgapkin:你找到解决办法了吗?
-
@sbhatt 不,很遗憾没有。使用了完全不同的方法
-
@RomanAgapkin 感谢您的快速回复,我能知道有什么不同的方法吗?是不是 JacksonXML 以外的其他方法?
-
@sbhatt 我不认为,不同的方法适合你 :-) 它更像是一种解决方法。我在反序列化中忽略了该字段并在之后“手动”初始化它
标签: java json xml fasterxml jackson-dataformat-xml