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

Привет, не подскажете, как написать конвертер для сохранения небольшого списка

в Room?

(Списки сохранять нельзя, поэтому нужно исходный список Job конвертировать в String, а при получении из Room обратно конвертировать его в список Job)

Job - Data Class состоит из 3 полей типа String (presentPost ,organization, date)

В данный момент у меня на выходе функции toJob() получается список, но список создаётся неправильно вот наглядно:

[Job(presentPost=Job(presentPost=должность 1, organization=, date=), Job(presentPost= organization=Организация1, organization=, date=), Job(presentPost= date=Дата1), organization=, date=), Job(presentPost=Job(presentPost=должность 2, organization=, date=), Job(presentPost= organization=Организация2, organization=, date=), Job(presentPost= date=Дата2), organization=, date=)]...

12 ответов

5 просмотров

Используйте Gson - он и в строку перегонит почти что угодно и обратно. А код в примере может только список строк на строки разобрать и обратно. И то коряво

Dmitry-Aleksandrovich Автор вопроса

Спасибо, почитаю

Ты на котлине пишешь? Тогда уж лучше Kotlinx serialization. Он без рефлексии, куда быстрее чем Gson. Посмотри графики сравнения. Плюс Gson не всегда хорошо работает с котлином - может засеттить нулл в ненулл поле и ты получишь рантайм экзепшен. Ну и Kotlinx serialization имеет куда больше типизации и проверок в компайл тайме.

Dmitry-Aleksandrovich Автор вопроса

О, благодарю

А в чем проблема установки null в not-null поле? Это проблема не Gson, а кривой реализации api/структуры

В том что нужно кидать экзепшен сразу что строка не парсится, как делает это котлин сериализация.

Ну да, но не всегда надеешься на бэкэндщиков

И как это проверить вне runtime (без json)?

А как это проверяет котлин сериализация? Дружить с типизацией котлина.

И нет, ты меня не понял. Я не говорил, что это надо проверять в компайл тайме (это невозможно). Я говорил, что выскакивает рантайм экзепшен, но не оттуда откуда надо.

С этим согласен

Там экзепшен не "я не могу распарсить", а при обращении к проперти "ууупс, тут нулл случайно оказался, хотя не должно было быть. Ну я это, пошёл короче".

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

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

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
Хтось використовував Vapor на Windows?
Jaroshevskii
15
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Оба варианта в целом подходят, но скорее создание конфликтной ситуации (на пустой основе). В прошлый раз он сказал мне про ESP32, я забыл про этот микроконтроллер, ошибся, я п...
КТ315
4
Карта сайта