Выбор запечатанного подкласса на основе значения поля в сериализации Kotlinx - PullRequest
0 голосов
/ 24 марта 2020

Есть ли способ различить guish между Successful и Failed ответами на основе значения поля ok в ответе JSON?

@Serializable
sealed class Response {
    @Serializable
    data class Successful(
        @SerialName("ok")
        val ok: Boolean,

        @SerialName("payload")
        val payload: Payload
    ) : Response()

    @Serializable
    data class Failed(
        @SerialName("ok")
        val ok: Boolean,

        @SerialName("description")
        val description: String
    ) : Response()
}

Итак , для {"ok":true, "payload":…} я хочу получить Successful класс, а для {"ok":false, "description":…} - Failed.

Я знаю, что есть похожий вопрос - Десериализация в запечатанный подкласс на основе значения поля - но он использует поле type, и у меня нет никаких дискриминаторов типов в JSON (значение из ok не является распознаванием типов (хотя может использоваться, что кстати с некоторыми взломами, наверное))

...