*POJOs:*
*All of them were created in separate java files. @Builder, @Getter,
@ToString, @NonNull - lombok annotations**@Nonnull, @Valid - javax
annotations*
@Builder
@Getter
@ToString
public class DummyParentClass {
@NonNull
@Nonnull
private DummyAbstractType dummyAbstractType;
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include =
JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "dummyAbstractType")
@Valid @Nonnull @NonNull private DummyAbstract dummyAbstract;
}
public enum DummyAbstractType {
A
}
@JsonSubTypes({
@JsonSubTypes.Type(value = DummyAbstractImplA.class, name = "A")
})
public abstract class DummyAbstract {
public abstract void validate();
}
@Builder
@Getter
@ToString
public class DummyAbstractImplA extends DummyAbstract {
@Nonnull
@NonNull
private String a;
@Nonnull @NonNull private String b;
@Override
public void validate() {
}
}
*Deserialise Code:*
String json2 = "{\n" +
" \"dummyAbstract\": {\n" +
" \"a\": \"as\",\n" +
" \"b\": \"as\"\n" +
" },\n" +
" \"dummyAbstractType\": \"A\"\n" +
"}";
DummyParentClass dummyParentClass = objectMapper.readValue(json2,
DummyParentClass.class);
System.out.println(dummyParentClass);
*Error:*
com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot
construct instance of `dummy.DummyParentClass`, problem: Internal error: no
creator index for property 'dummyAbstract' (of type
com.fasterxml.jackson.databind.deser.impl.FieldProperty)
at [Source: (String)"{
"dummyAbstract": {
"a": "as",
"b": "as"
},
"dummyAbstractType": "A"
}"; line: 7, column: 1]
at
com.fasterxml.jackson.databind.exc.ValueInstantiationException.from(ValueInstantiationException.java:47)
at
com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:2047)
at
com.fasterxml.jackson.databind.DeserializationContext.handleInstantiationProblem(DeserializationContext.java:1400)
at
com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapInstantiationProblem(BeanDeserializerBase.java:1866)
at
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeUsingPropertyBasedWithExternalTypeId(BeanDeserializer.java:1090)
at
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeWithExternalTypeId(BeanDeserializer.java:929)
at
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:349)
at
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:184)
at
com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)
at
com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674)
at
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3629)
at
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3597)
--
You received this message because you are subscribed to the Google Groups
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jackson-user/f946290f-2eca-46f2-bc3b-7afc9cbc7b5dn%40googlegroups.com.