static class SomeObject {
@JsonCreator static SomeObject create(Map<String, String> someMap) {
return new SomeObject();
}
}
@Test
void shouldUseJsonCreator() throws Exception {
new ObjectMapper()
.registerModule(new VavrModule())
.readValue("{}", SomeObject.class);
}
java.lang.NullPointerException
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:57)
at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:10)
at io.vavr.jackson.datatype.deserialize.MapDeserializer.deserialize(MapDeserializer.java:67)
at io.vavr.jackson.datatype.deserialize.MapDeserializer.deserialize(MapDeserializer.java:35)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1315)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:331)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:164)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4524)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3466)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3434)
The issue seems to be that MapDeserializer doesn't ensure that the current token is a valid field name before invoking the KeyDeserializer.
The following Code fails:
The issue seems to be that
MapDeserializer
doesn't ensure that the current token is a valid field name before invoking theKeyDeserializer
.