2016-04-15 18 views
1

Ich habe mir XML von einem externen System zur Verfügung gestellt, das ich analysieren muss. Einer der Werte enthält einige HTML (unverschlüsselt), die Jackson Probleme mit mit:Force JacksonXml, um Rohwert als String zu serialisieren

Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token 

Die XML sieht wie folgt aus:

<lookup_info>-- [Snipped] --------------<BR/> 
Some more snipped data.<BR/> 
<BR/> 
And some more snipped data..<BR/> 
<BR/> 
And even more snipped data...</lookup_info> 

Mein Code funktioniert gut für alle Bereiche außer diesem, mein pojo Code wie folgt aussieht:

@JacksonXmlProperty(localName = "customer_name") 
private String customerName; 

@JacksonXmlProperty(localName = "email") 
private String email; 

@JacksonXmlProperty(localName = "lookup_info") 
private String lookupInfo; 

Wenn ich lookupInfo ändern Object zu geben, kann ich sehen, Jackson ist das Abbilden der Rohdaten zu einem LinkedHashMap ... Mit auf e Eintrag, {BR=null}

Wie kann ich Jackson zwingen, den Rohwert auf String zu serialisieren? Ich habe es mit @JacksonXmlText versucht, und das ergibt lookupInfo ist null.

Antwort

0

Das Problem ist, dass Ihre XML ungültig ist. Wenn Sie HTML-Inhalt in ein XML-Element eingebettet haben möchten, dann müssen Sie den Inhalt richtig codieren. Wenn Sie den Inhalt generieren, sollte jeder vernünftige XML-Generator diese Codierung für Sie übernehmen.

Sie xml sollte ungefähr so ​​aussehen:

<lookup_info>-- [Snipped] --------------&lt;BR/&gt; 
Some more snipped data.&lt;BR/&gt; 
&lt;BR/&gt; 
And some more snipped data..&lt;BR/&gt; 
&lt;BR/&gt; 
And even more snipped data...</lookup_info>