Closed
Description
When trying to deserialize a byte[]
from a Map
when the deserialization type comes from an annotation, I'm seeing the following exception:
java.lang.IllegalArgumentException: Can not deserialize Class [B (of type array) as a Bean
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.isPotentialBeanType(BeanDeserializerFactory.java:808)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:138)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:403)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:352)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
at com.fasterxml.jackson.databind.DeserializationContext.findContextualValueDeserializer(DeserializationContext.java:428)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.findDeserializer(StdDeserializer.java:947)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.resolve(BeanDeserializerBase.java:439)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:296)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:461)
at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3804)
at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:3418)
at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:3351)
The below is a repro.
public class JacksonTest {
static class Foo {
@JsonProperty
@JsonDeserialize(as=byte[].class)
Object someBytes;
}
public void testFooFromMap() {
Map<String, Object> map = new HashMap<>();
map.put("someBytes", "HelloWorld".getBytes());
ObjectMapper m = new ObjectMapper();
m.convertValue(map, Foo.class);
}
}
I discovered this on 2.5.1, but I tried 2.6.0 and it's exhibiting the same behavior.
Thanks!
Metadata
Metadata
Assignees
Labels
No labels