Size: a a a

Kotlin Community

2020 April 05

AE

Alexandr Emelyanov in Kotlin Community
Alex Wells
так, но ты же спрашиваешь, зачем учить аннотации - я и говорю, что с ними, имхо, удобней и читабельней
Ну, т.е. Jackson лучше?
источник

AD

Apache DOG™ in Kotlin Community
Alexander Nozik
Можно подробнее, что такое кодеки? Сериализация?
(T => Жисон, Жисон => T)
источник

AE

Alexandr Emelyanov in Kotlin Community
Apache DOG™
(T => Жисон, Жисон => T)
А, фп, монады. Можно дальше не продолжать
источник

AN

Alexander Nozik in Kotlin Community
Apache DOG™
(T => Жисон, Жисон => T)
А зачем там макросы-то? Вот тут уже битый част обсуждают различиные варианты
источник

AD

Apache DOG™ in Kotlin Community
Потому чтобы без рефлексии и рантайма
источник

AW

Alex Wells in Kotlin Community
Alexandr Emelyanov
Это не задача сериализатора) это маппер, для этого есть mapstruct. А вообще в данном случае просто вешаются аннотации с именами в json...
Вот этот юс кейс чем заменить в jackson? Это сериализация для филда, у которого могут быть разные типы - Name, NodeAbstract.Expr или Stmt.Class
companion object Adapter {
                   @ToJson
                   fun toJson(name: ClassName): Any = when (name) {
                       is Named -> name.name
                       is Expr -> name.expr
                       is Anonymous -> name.expr
                   }

                   @FromJson
                   fun fromJson(
                           reader: JsonReader,
                           nodeAdapter: JsonAdapter<NodeAbstract>
                   ): ClassName = when (val node = nodeAdapter.fromJson(reader)) {
                       is Name -> Named(node)
                       is Stmt.Class -> Anonymous(node)
                       is NodeAbstract.Expr -> Expr(node)
                       else -> throw JsonDataException("Unexpected node $node")
                   }
               }
источник

AN

Alexander Nozik in Kotlin Community
Alexandr Emelyanov
А, фп, монады. Можно дальше не продолжать
Да фиг с ним, пусть монады, просто давайте уже будем обсуждать кейсы КРОМЕ сериализации
источник

AD

Apache DOG™ in Kotlin Community
Генерация функционала по структуре
источник

AW

Alex Wells in Kotlin Community
Alexandr Emelyanov
Ну, т.е. Jackson лучше?
мб и лучше, но с чего такой вывод? Нужное мне кол-во аннотаций есть и в moshi
источник

AD

Apache DOG™ in Kotlin Community
Хеши, сравнение и т.д.
источник

AD

Apache DOG™ in Kotlin Community
Транслятор SQL в целевой язык, транслятор целевого языка в что то другое
источник

AD

Apache DOG™ in Kotlin Community
И ещё очень много чего
источник

AE

Alexandr Emelyanov in Kotlin Community
Alex Wells
Вот этот юс кейс чем заменить в jackson? Это сериализация для филда, у которого могут быть разные типы - Name, NodeAbstract.Expr или Stmt.Class
companion object Adapter {
                   @ToJson
                   fun toJson(name: ClassName): Any = when (name) {
                       is Named -> name.name
                       is Expr -> name.expr
                       is Anonymous -> name.expr
                   }

                   @FromJson
                   fun fromJson(
                           reader: JsonReader,
                           nodeAdapter: JsonAdapter<NodeAbstract>
                   ): ClassName = when (val node = nodeAdapter.fromJson(reader)) {
                       is Name -> Named(node)
                       is Stmt.Class -> Anonymous(node)
                       is NodeAbstract.Expr -> Expr(node)
                       else -> throw JsonDataException("Unexpected node $node")
                   }
               }
У Jackson тоже есть конверторы, если это sealed, то скорее всего стандартный модуль поддержки котлин с этим справится
источник

AE

Alexandr Emelyanov in Kotlin Community
Alex Wells
мб и лучше, но с чего такой вывод? Нужное мне кол-во аннотаций есть и в moshi
Он делает использование более вербозным
источник

AL

Alexander Levin in Kotlin Community
Alexandr Emelyanov
А, фп, монады. Можно дальше не продолжать
В сообщении просто пара из сериализатора и десериализатора условно (ну т.е. не из строки, а из абстрактного жсона, но вроде это всё ещё так же называется), если переводить в местные термины. Давайте без подхода "всё, что непонятно это монады, а значит не нужно" :D
источник

AE

Alexandr Emelyanov in Kotlin Community
Apache DOG™
Транслятор SQL в целевой язык, транслятор целевого языка в что то другое
А в чем проблема?
источник

AE

Alexandr Emelyanov in Kotlin Community
Alexander Levin
В сообщении просто пара из сериализатора и десериализатора условно (ну т.е. не из строки, а из абстрактного жсона, но вроде это всё ещё так же называется), если переводить в местные термины. Давайте без подхода "всё, что непонятно это монады, а значит не нужно" :D
Я то понимаю что написано и зачем)
источник

AW

Alex Wells in Kotlin Community
Alexandr Emelyanov
У Jackson тоже есть конверторы, если это sealed, то скорее всего стандартный модуль поддержки котлин с этим справится
я не сомневаюсь что они есть, но с moshi я разобрался за 20 минут, потому что вся его дока умещается на одну страницу. И это не обычный sealed - мне нужен sealed в зависимости от типа данных в json'е, и.е. сначала десериализировать значение, потом в зависимости от его типа - обернуть оберткой
источник

AW

Alex Wells in Kotlin Community
Alexandr Emelyanov
Он делает использование более вербозным
чем? Все, что мне нужно было сделать, это написать эти самые кастомные адаптеры в нескольких местах - сомневаюсь, что с jackson'ом было бы как-то проще
источник

AD

Apache DOG™ in Kotlin Community
Alexandr Emelyanov
Я то понимаю что написано и зачем)
В необходимости компайлтайма
источник