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