kotlinx.serialization.json.Json
                  
                  
                  
                  
                  
                  @Serializable
                  
                  
                  sealed class Foo
                  
                  
                  @Serializable
                  
                  
                  data class A(val s: String = "A") : Foo()
                  
                  
                  
                  
                  
                  @Serializable
                  
                  
                  sealed class Moo : Foo()
                  
                  
                  @Serializable
                  
                  
                  data class B(val s: String = "B") : Moo()
                  
                  
                  
                  
                  
                  fun main() {
                  
                  
                      val list = B("adsa") as Foo
                  
                  
                  
                  
                  
                      val json = Json.encodeToString(list)
                  
                  
                      println(json)
                  
                  
                  
                  
                  
                      val list2: Foo = Json.decodeFromString(json)
                  
                  
                      println(list2)
                  
                  
                  }
                  
                  
                  
                  
                  
                  Но если сменить имя класс B на другое, например Ba, то все начинает работать?
                  
                  
                  
                  
                  
                  Ошибка:
                  
                  
                  Exception in thread "main" java.lang.IllegalStateException: Primitives cannot be serialized polymorphically with 'type' parameter. You can use 'JsonBuilder.useArrayPolymorphism' instead
                  
                  
                    at kotlinx.serialization.json.internal.PolymorphicKt.checkKind(Polymorphic.kt:57)
                  
                  
                    at kotlinx.serialization.json.internal.PolymorphicKt.findActualSerializer(Polymorphic.kt:32)
                  
                  
                    at kotlinx.serialization.json.internal.PolymorphicKt.access$findActualSerializer(Polymorphic.kt:1)
                  
                  
                    at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:214)
                  
                  
                    at kotlinx.serialization.json.Json.encodeToString(Json.kt:85)
                  
                  
                    at MainKt.main(main.kt:29)
                  
                  
                    at MainKt.main(main.kt)
                  
                  
                  Kotlin 1.5.20
                  
                  
                  kotlinx-serialization-json 1.2.2
                  
                  
                
чет странное, ругается на то, что ты пытаешься полиморфно примитив сериализовать, а можно только структуру, потому что полиморфная сериализация добавляет поле "type": "typeAnnotation" в итоговом жсоне, а у примитивов, естественно, некуда добавить это. но тут нигде нет примитивов, так если ещё и чинится переименовкой - вообще странно.
Дебаггером тип примитива показало Byte
если ты уверен, что именно этот код фейлится и чинится переименованием - делай минимальный репродьюс и создавай ишшью.
Обсуждают сегодня