169 похожих чатов

Подскажите пожалуйста, почему данный код не работает? import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import

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

3 ответов

49 просмотров

чет странное, ругается на то, что ты пытаешься полиморфно примитив сериализовать, а можно только структуру, потому что полиморфная сериализация добавляет поле "type": "typeAnnotation" в итоговом жсоне, а у примитивов, естественно, некуда добавить это. но тут нигде нет примитивов, так если ещё и чинится переименовкой - вообще странно.

000Sanya- Автор вопроса

если ты уверен, что именно этот код фейлится и чинится переименованием - делай минимальный репродьюс и создавай ишшью.

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта