Size: a a a

Kotlin Community

2020 June 06

КР

Кирилл Романенко... in Kotlin Community
Подскажите пожалуйста, столкнулся с проблемой при использовании kotlinx serialization. Не знаю, как из неё выйти...
Вот тут приложил и лог, и код
https://gist.github.com/indrih17/1e5f002b574ac2af02be2a79a28e21c3

Суть ошибки: раньше условный User1 лежал в каталоге ru.bar, я переместил его в ru.foo, и теперь не парсится строка, где забит ru.bar.User1.
Как распарсить теперь? Без того, чтобы вручную поменять путь в стринге.
источник

КР

Кирилл Романенко... in Kotlin Community
Кирилл Романенко
Подскажите пожалуйста, столкнулся с проблемой при использовании kotlinx serialization. Не знаю, как из неё выйти...
Вот тут приложил и лог, и код
https://gist.github.com/indrih17/1e5f002b574ac2af02be2a79a28e21c3

Суть ошибки: раньше условный User1 лежал в каталоге ru.bar, я переместил его в ru.foo, и теперь не парсится строка, где забит ru.bar.User1.
Как распарсить теперь? Без того, чтобы вручную поменять путь в стринге.
Обновил гист, чуть упростил код.
источник

AN

Alexander Nozik in Kotlin Community
Кирилл Романенко
Подскажите пожалуйста, столкнулся с проблемой при использовании kotlinx serialization. Не знаю, как из неё выйти...
Вот тут приложил и лог, и код
https://gist.github.com/indrih17/1e5f002b574ac2af02be2a79a28e21c3

Суть ошибки: раньше условный User1 лежал в каталоге ru.bar, я переместил его в ru.foo, и теперь не парсится строка, где забит ru.bar.User1.
Как распарсить теперь? Без того, чтобы вручную поменять путь в стринге.
Какая версия сериализации?
источник

КР

Кирилл Романенко... in Kotlin Community
Alexander Nozik
Какая версия сериализации?
0.20.0
источник

AN

Alexander Nozik in Kotlin Community
Тогда должно вроде работать. В предыдущеих версиях надо было указывать serialModule. Проверьте, что версия везде действительно 0.20
источник

КР

Кирилл Романенко... in Kotlin Community
Alexander Nozik
Тогда должно вроде работать. В предыдущеих версиях надо было указывать serialModule. Проверьте, что версия везде действительно 0.20
Это чистый тестовый проект без всяких посторонних библиотек, там точно 0.20.0. А вообще баг возник в рабочем проекте, но там тоже 100% 0.20.0.
источник

AN

Alexander Nozik in Kotlin Community
Кирилл Романенко
Это чистый тестовый проект без всяких посторонних библиотек, там точно 0.20.0. А вообще баг возник в рабочем проекте, но там тоже 100% 0.20.0.
Странно. Вот дока: https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/polymorphism.md#sealed-classes. Если и плагин и рантайм на 0.20.0, должно работать. Может плагин старый?
источник

КР

Кирилл Романенко... in Kotlin Community
Alexander Nozik
Странно. Вот дока: https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/polymorphism.md#sealed-classes. Если и плагин и рантайм на 0.20.0, должно работать. Может плагин старый?
Нет, плагин актуальный в обоих проектах.
источник

AN

Alexander Nozik in Kotlin Community
Кирилл Романенко
Нет, плагин актуальный в обоих проектах.
Ну попробуйте добавить сериал модуль на всякий случай
источник

КР

Кирилл Романенко... in Kotlin Community
Alexander Nozik
Ну попробуйте добавить сериал модуль на всякий случай
В рабочем проекте как раз с сериал модулем, тут я его выпилил для упрощения, но и с ним не работает.
источник

AN

Alexander Nozik in Kotlin Community
Кирилл Романенко
В рабочем проекте как раз с сериал модулем, тут я его выпилил для упрощения, но и с ним не работает.
Тогда время звать @sandwwraith
источник

AM

Andrew Mikhaylov in Kotlin Community
Минутка забавных сообщений об ошибках :)
(View — это expect class без конструктора)
источник

AM

Andrew Mikhaylov in Kotlin Community
источник

VS

Vladimir Sitnikov in Kotlin Community
Так оно же и говорит, что нужно добавить expect конструктор?
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Sitnikov
Так оно же и говорит, что нужно добавить expect конструктор?
Оно при попытке обратиться к конструктору пишет, что его нет, при попытке упустить его пишет, что он есть :)
источник

AM

Andrew Mikhaylov in Kotlin Community
Понятно, что сообщение об ошибке, которое пишет о том, что у типа есть конструктор, просто проверяет, что происходит попытка отнаследоваться от класса, и оно знать не знает об экспект классах без конструкторов. Просто ситуация забавная.
источник

VS

Vladimir Sitnikov in Kotlin Community
Andrew Mikhaylov
Понятно, что сообщение об ошибке, которое пишет о том, что у типа есть конструктор, просто проверяет, что происходит попытка отнаследоваться от класса, и оно знать не знает об экспект классах без конструкторов. Просто ситуация забавная.
Я и говорю: ты объявлял expect constructor?

Если объявишь, то и отнаследваться сможешь. Вроде, у меня работало
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Sitnikov
Я и говорю: ты объявлял expect constructor?

Если объявишь, то и отнаследваться сможешь. Вроде, у меня работало
Не объявлял. Ещё раз -- я понимаю, что с кодом не так, меня позабавили сообщения об ошибках.
источник

LS

Leonard Startsev in Kotlin Community
Кирилл Романенко
Подскажите пожалуйста, столкнулся с проблемой при использовании kotlinx serialization. Не знаю, как из неё выйти...
Вот тут приложил и лог, и код
https://gist.github.com/indrih17/1e5f002b574ac2af02be2a79a28e21c3

Суть ошибки: раньше условный User1 лежал в каталоге ru.bar, я переместил его в ru.foo, и теперь не парсится строка, где забит ru.bar.User1.
Как распарсить теперь? Без того, чтобы вручную поменять путь в стринге.
так а что вы хотели то? чтобы по старому имени распарсить, укажите @SerialName
источник

AN

Alexander Nozik in Kotlin Community
Leonard Startsev
так а что вы хотели то? чтобы по старому имени распарсить, укажите @SerialName
Мне всегда казалось, что SerialName - это override. Совершенно не очевидно, что его надо явно указывать
источник