kotlinx.serialization? - <https://github.com/Kotli...
# russian
g
l
Так уж сложилось, что сейчас используется protobuf3 не поддерживаемый kotlinx.serialization Вопрос по использованию протобафа открыт, он мне не особо нравится, но сейчас я не могу его меня.... хотя почему бы и нет. Сейчас получается как: сущность -> преобразование протобаффом в бинарный массив -> позорный base64 (потому что я не смог настроить js клиент на бинарные данные) -> ну а потом в обратном порядке. Может кто то использовал kotlin(js) с вещами типа protbuff? Просто сам протобаф довольно громоздкий и долго на нем писать сущности.
g
Может на JS отправлять через прокси который в Json конвертит?
Ну можно попробовать написать совместимый с protobuf3 парсер, там не так много кода https://github.com/Kotlin/kotlinx.serialization/blob/master/runtime/common/src/main/kotlin/kotlinx/serialization/protobuf/ProtoBuf.kt Можно спросить советы кого-то из команды kotlinx.serialization
насколько я помню говорили что pb2 лучше подходит из-за того, что там не опциональные параметры по умолчанию (я не сильный знаток протобафа, могу напутать). но может с какими то оговорками можно и для proto3 запилить
ах, вот в доке: Note that we are using proto2 semantics, where all fields are explicitly required or optional.
l
Я все искал способ передачи информации, максимально сжатый (в проекте есть мобильное приложение с ужасным интернетом - по полю ходят), и чтобы можно было на разных языках писать (сменится завтра команда мобильного приложения или сервисов... чтобы они не были прибиты гвоздями к одному языку. А у протобаф есть схемы для генерации).
Я в принципе и не против выкинуть протобаф (я вот ща порываюсь заменить его на просто json)
s
@lewik Я правильно понял, что нужно именно это : https://github.com/Kotlin/kotlinx.serialization/issues/24 ?
l
Да, точно, оно)
s
теоретически парсер сериализации должен съесть proto3 (за исключением packed arrays), если везде @Optional навесить , но я не пробовал
l
маскировать под external кстати очень не удобно. Никакие проверки типов не сработают потом, получается кастрированный котлин, очень не советую.
s
а фича из issue я надеюсь в следующую версию сериализации попадёт
l
Вообще, это ведь распространенная вещь - сжатый формат передачи со схемой (чтобы генерить код на разных языках), неужто кроме протобафа никто ничего не придумал/не использовал? (со схемой, чтобы не гадать какое там поле поменялось)
s
Apache Thrift ещё есть, например. Да мне кажется, много чего можно найти по запросу “protobuf analog”
e
Что касается ProtoBuf есть вот такая идея: https://github.com/Kotlin/kotlinx.serialization/issues/34
l
Наоборот надо
e
Наоборт тоже надо
l
Да, точно
Вам, наверно, сотрудников на это все уже не хватает)
e
Просто proto файл это очень урезанный формат. В нем очень мало нужной информации о типах можно выразить.
Так как Kotlin дает более богатое представление, то лучше его использовать как исходник. Но если у вас уже есть proto файл, то конечно нужен конвертер и в обратную сторону
А сотрудников не хватает, это верно. Как мы говорим в таком случае — contributions are welcome.