Jackson: How to De-Serialize a JSON with Custom Quote Char?

Viewed 162

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?

0 Answers
Related