У меня есть следующее JSON:
{
"type":"concrete",
"poly":"{\"value\":\"CONCRETE VALUE\"}"
}
Как видите, поле "poly" - это JSON. И это полиморф
И у меня есть эти POJO.
class Data(
@JsonTypeId
val type: String,
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "type", visible = true)
val poly: Base
)
@JsonSubTypes(
JsonSubTypes.Type(value = Concrete::class, name = "concrete"),
JsonSubTypes.Type(value = AnotherConcrete::class, name = "another")
)
interface Base
@JsonTypeName("concrete")
data class Concrete(val value: String) : Base
@JsonTypeName("another")
data class AnotherConcrete(val anotherValue: String) : Base
Но когда я пытаюсь прочитать значение через объект сопоставления, выдает ошибку
InvalidDefinitionException: Невозможно создать экземпляр Base