title: Jackson Deserialize Abstract Classes
body: <p>I am trying to deserialize an object using JSON ObjectMapper. I see the below error when trying to deserialize</p>
  
  <blockquote>
    <p>com.fasterxml.jackson.databind.JsonMappingException: Can not construct
    instance of com.phoenix.types.OrderItem:
    abstract types either need to be mapped to concrete types, have custom
    deserializer, or contain additional type information  at [Source:
    java.io.StringReader@4bb33f74; line: 112, column: 7] (through
    reference chain:
    com.phoenix.types.GenerateRequest["order"]->com.phoenix.types.Order["orderItems"]->Object[][0])
      at
    com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:261)
      at
    com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:1456)
      at
    com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1012)
      at
    com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:149)
      at
    com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:196)
      at
    com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:20)
      at
    com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:499)
      at
    com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:101)
      at
    com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
      at
    com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
      at
    com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:499)
      at
    com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:101)
      at
    com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
      at
    com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
      at
    com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3789)
      at
    com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2833)</p>
  </blockquote>
  
  <p>I came across this <a href="https://stackoverflow.com/questions/5489532/jackson-json-library-how-to-instantiate-a-class-that-contains-abstract-fields">post</a> for performing polymorphic deserialization.  This basically provides the solution for resolving the error listed above. The classes (In this instance OrderItem etc) that I am using for deserialization are part of a jar file.  However is there a way to define JsonDeserialize as part of objectmapper when trying to deserialize instead of adding annotation to the class itself as I don't have access to it.</p>