-
-
Notifications
You must be signed in to change notification settings - Fork 234
Closed
Description
I have a simple test at https://github.com/rpatrick00/jackson-polymorphic-test where I am trying to use polymorphic types using JAXB annotations. The code works fine with straight JAXB but Jackson 2.6.3 is failing to read the file that it wrote. The file that Jackson with JAXB annotations wrote looks like this:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <company> <computers> <desktop id="computer-1"> <location>Bangkok</location> </desktop> <desktop id="computer-2"> <location>Pattaya</location> </desktop> <laptop id="computer-3"> <vendor>Apple</vendor> </laptop> </computers> </company>
When trying to use Jackson to read the file back in, it fails with the following:
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (FIELD_NAME), expected START_OBJECT: need JSON Object to contain As.WRAPPER_OBJECT type information for class test.Computer at [Source: company-jackson.xml; line: 4, column: 9] (through reference chain: test.Company["computers"]->java.util.ArrayList[0]) at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148) at com.fasterxml.jackson.databind.DeserializationContext.wrongTokenException(DeserializationContext.java:946) at com.fasterxml.jackson.databind.jsontype.impl.AsWrapperTypeDeserializer._deserialize(AsWrapperTypeDeserializer.java:91) at com.fasterxml.jackson.databind.jsontype.impl.AsWrapperTypeDeserializer.deserializeTypedFromObject(AsWrapperTypeDeserializer.java:49) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithType(BeanDeserializerBase.java:992) at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:247) at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217) at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25) at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:520) at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:101) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:258) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:125) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2620) at test.RunThis.readJacksonFile(RunThis.java:84) at test.RunThis.main(RunThis.java:137) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Maybe I am just doing something stupid but it seems like Jackson should be able to read a file that it generated.
Metadata
Metadata
Assignees
Labels
No labels