Open
Description
jackson-dataformat-xml version: 2.18.3
package com.test;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import java.io.Serializable;
public class Test {
public static void main(String[] args) throws Exception {
char[] chars = new char[2];
chars[0] = 0xffff;
chars[1] = 'A';
String info = new String(chars);
System.out.println(info);
Other other = new Other();
other.setInfo(info);
XmlMapper xmlMapper = new XmlMapper();
String otherXml = xmlMapper.writeValueAsString(other);
System.out.println(otherXml);
Other other1 = xmlMapper.readValue(otherXml, Other.class);
System.out.println(other1.getInfo());
}
@JacksonXmlRootElement(localName = "Other")
public static class Other implements Serializable {
@JacksonXmlProperty(localName = "Info")
private String info;
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
}
running result:
�A
<Other><Info>A</Info></Other>
Exception in thread "main" com.fasterxml.jackson.core.JsonParseException: Illegal character entity: expansion character (code 0xffff)
at [row,col {unknown-source}]: [1,21]
at [Source: (StringReader); line: 1, column: 22]
at com.fasterxml.jackson.dataformat.xml.util.StaxUtil.throwAsParseException(StaxUtil.java:25)
at com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser._nextToken(FromXmlParser.java:1460)
at com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser.nextToken(FromXmlParser.java:746)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:305)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
at com.fasterxml.jackson.dataformat.xml.deser.XmlDeserializationContext.readRootValue(XmlDeserializationContext.java:104)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4931)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3868)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3836)
at com.test.Test.main(Test.java:21)
Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0xffff)
at [row,col {unknown-source}]: [1,21]
at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:634)
at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:504)
at com.ctc.wstx.sr.StreamScanner.reportIllegalChar(StreamScanner.java:2463)
at com.ctc.wstx.sr.StreamScanner.validateChar(StreamScanner.java:2400)
at com.ctc.wstx.sr.StreamScanner.resolveCharEnt(StreamScanner.java:2376)
at com.ctc.wstx.sr.StreamScanner.fullyResolveEntity(StreamScanner.java:1524)
at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2838)
at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1122)
at com.fasterxml.jackson.dataformat.xml.deser.XmlTokenStream._collectUntilTag(XmlTokenStream.java:568)
at com.fasterxml.jackson.dataformat.xml.deser.XmlTokenStream._next(XmlTokenStream.java:473)
at com.fasterxml.jackson.dataformat.xml.deser.XmlTokenStream.next(XmlTokenStream.java:313)
at com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser._nextToken(FromXmlParser.java:1458)
... 8 more
the class Other is provided by other system, we could not add @JacksonXmlCData
to it's field info
.
so how to avoid JsonParseException when the value of info
has unicode characters such as 
?
Metadata
Metadata
Assignees
Labels
No labels