Выбор закрытого подкласса на основе значения поля в Kotlinx Serialization

Есть ли способ различить 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 не является различением типов (хотя, возможно, это можно использовать с некоторыми хаками))

0 ответов

Другие вопросы по тегам