Как проанализировать POJO с полиморфом c поле, которое содержит JSON в виде строки? - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть следующее 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...