Вопрос по сериализации sealed классов. Такой приме...
# russian
r
Вопрос по сериализации sealed классов. Такой пример работает
Copy code
private fun test() {
        val string = """{ "type": "a", "value": "Hello"}"""
        val result = Json.decodeFromString(Test.serializer(), string)
        println(">>> result $result")
    }

    @Serializable
    sealed class Test {
        abstract val type: String

        @SerialName("a")
        @Serializable
        data class A(
            override val type: String,
            val value: String
        ) : Test()
    }
но можно переопределить type на другое значение? Пытаюсь вот так вот
Copy code
private fun test() {
        val string = """{ "fieldType": "a", "value": "Hello"}"""
        val result = Json.decodeFromString(Test.serializer(), string)
        println(">>> result $result")
    }

    @Serializable
    sealed class Test {
        @SerialName("fieldType")
        abstract val type: String

        @SerialName("a")
        @Serializable
        data class A(
            override val type: String,
            val value: String
        ) : Test()
    }
Но получаю ошибку
Polymorphic serializer was not found for missing class discriminator ('null')
Нашел решение
Copy code
private val json = Json {
        classDiscriminator = "fieldType"
    }