Попытка сериализации Json в Object была реализована и имеет непримитивный тип данных. Вот код, который я пытаюсь запустить.
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include =
JsonTypeInfo.As.WRAPPER_OBJECT)
@JsonSubTypes({
@JsonSubTypes.Type(value = Child.class, name = "Child")
})
public interface Parent {
}
.
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"cdata"
})
public class Child implements Serializable, Parent {
private static final long serialVersionUID = 34658537546173718L;
@JsonProperty("cdata")
private Cdata cdata;
}
.
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"version"
})
public class Cdata implements Serializable {
private static final long serialVersionUID = -7706669244151885541L;
private String version;
}
.
ObjectMapper mapper = new ObjectMapper();
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
mapper.configure( MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true );
Parent parent = mapper.readValue("jsonString", Parent.class);
Это ошибка, которую я получаю, когда запускаю приведенный выше код:
com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Не удалось определить идентификатор типа 'cdata' как подтип [простой тип, класс Child]: известный тип ids = [Child]
в