Jackson allows the configuration of a custom quote char for serialization.
I have a simple class, I want to (de)serialize:
public class MyInfo {
private String info;
// constructor, getters, setters
}
Serialization works fine with a custom char (X instead of "):
MyInfo info = new MyInfo("test string");
JsonFactoryBuilder jfb = new JsonFactoryBuilder();
JsonFactory jf = jfb.quoteChar('X').build();
ObjectMapper mapper = new ObjectMapper(jf);
String s = mapper.writeValueAsString(info);
System.out.println(s);
results in: {XinfoX:Xtest stringX} - as expected.
When I try to serialize that string, again (mapper is the same as above):
info = mapper.readValue(s, MyInfo.class);
I get the following exception:
Exception in thread "main" com.fasterxml.jackson.core.JsonParseException: Unexpected character ('X' (code 88)): was expecting double-quote to start field name
at [Source: (String)"{XinfoX:Xtest stringX}"; line: 1, column: 3]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:2337)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:710)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:635)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddName(ReaderBasedJsonParser.java:1814)
at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:713)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:187)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4593)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3516)
How do I enable the custom quote char for de-serialization?