Size: a a a

Kotlin Community

2020 April 05

AW

Alex Wells in Kotlin Community
Alexandr Emelyanov
Новое не всегда лучше
ну есстественно, но я не прочь попробывать
источник

AN

Alexander Nozik in Kotlin Community
Alex Wells
ну есстественно, но я не прочь попробывать
Ну сложные вещи в kotlinx-serialization пока сложно.
источник

AN

Alexander Nozik in Kotlin Community
Apache DOG™
Она не сильно отличается по принципу действия от макросной
А давайте все-таки юз кейсы конкретные. Что где и зачем нужно и обсудим, как это лучше на котлин делать.
источник

AW

Alex Wells in Kotlin Community
было бы легче, если бы был один источник сериалайзеров для всех типов. Тот же moshi инжектит "адаптеры" для любых типов в любые другие адаптеры и сам разбирается с тем, что я ему отдал после десериализации.

kotlinx почему то заставляет все делать руками, и легко вытащить нужный сериалайзер для типа - нельзя. Если они это доделают - уже можно будет пользоватся
источник

AN

Alexander Nozik in Kotlin Community
Alex Wells
было бы легче, если бы был один источник сериалайзеров для всех типов. Тот же moshi инжектит "адаптеры" для любых типов в любые другие адаптеры и сам разбирается с тем, что я ему отдал после десериализации.

kotlinx почему то заставляет все делать руками, и легко вытащить нужный сериалайзер для типа - нельзя. Если они это доделают - уже можно будет пользоватся
Потому что без рефлексии. В котлин сериализации вы тоже можете включить рефлективный поиск сериализаторов и оно будет работать
источник

AD

Apache DOG™ in Kotlin Community
Alexander Nozik
А давайте все-таки юз кейсы конкретные. Что где и зачем нужно и обсудим, как это лучше на котлин делать.
Кодоген который расставляет всё на этапе компиляции хорош тем, что что он наделал можно понять не запуская программу и не ломая моск. Собственно где задача допускает решения до запуска программы его лучше бы применять. Кодоген на стероидах - макросы. Всё же кодеки допускают решения на этапе компиляции, вот лучше и применять. Наилучшим бы решением был бы кодоген а-ля circe+имплиситы только на котлине
источник

AN

Alexander Nozik in Kotlin Community
Apache DOG™
Кодоген который расставляет всё на этапе компиляции хорош тем, что что он наделал можно понять не запуская программу и не ломая моск. Собственно где задача допускает решения до запуска программы его лучше бы применять. Кодоген на стероидах - макросы. Всё же кодеки допускают решения на этапе компиляции, вот лучше и применять. Наилучшим бы решением был бы кодоген а-ля circe+имплиситы только на котлине
Я просил конкретные примеры.
источник

AE

Alexandr Emelyanov in Kotlin Community
Alex Wells
ну, в moshi тоже) Банально мой use case: moshi мне на первой странице его показал и использовать его - одно удовольствие.

jackson же дает список аннотаций и нихрена не обьясняет, как достичь того, что я хочу:
https://github.com/FasterXML/jackson-annotations/wiki/Jackson-Annotations
Зачем учить аннотации? Создал маппер и конвертируй любой объект
источник

AD

Apache DOG™ in Kotlin Community
Alexander Nozik
Я просил конкретные примеры.
Какие конкретные, у вас такой штуки не запилено, как я вам их приведу?
источник

AN

Alexander Nozik in Kotlin Community
Apache DOG™
Какие конкретные, у вас такой штуки не запилено, как я вам их приведу?
юз кейсы. Что нужно и зачем. Иначе это очередной бепсполезный треп на тему "вон там есть фича".
источник

AW

Alex Wells in Kotlin Community
Alexandr Emelyanov
Зачем учить аннотации? Создал маппер и конвертируй любой объект
а в чем разница то? moshi предоставляет удобный механизм - аннотируешь метод сериализации и десерилизации и все готово. Jackson этого не делает (либо я не разобрался - так или иначе, с moshi проще). Механизм с аннотациями проще и читабельней.
источник

AW

Alex Wells in Kotlin Community
к тому же: большинство обьектов конвертируются 1в1 и только несколько требуют кастомных сериалайзеров/кастомных названий филдов. Опять же несколько аннотаций в нужных местах имхо читабельней чем что-либо еще
источник

AD

Apache DOG™ in Kotlin Community
Alexander Nozik
юз кейсы. Что нужно и зачем. Иначе это очередной бепсполезный треп на тему "вон там есть фича".
Json кодеки достаточно конкретный юзкейс?
источник

AN

Alexander Nozik in Kotlin Community
Apache DOG™
Json кодеки достаточно конкретный юзкейс?
Можно подробнее, что такое кодеки? Сериализация?
источник

AE

Alexandr Emelyanov in Kotlin Community
Alex Wells
а в чем разница то? moshi предоставляет удобный механизм - аннотируешь метод сериализации и десерилизации и все готово. Jackson этого не делает (либо я не разобрался - так или иначе, с moshi проще). Механизм с аннотациями проще и читабельней.
Это?

class EventJsonAdapter { @FromJson Event eventFromJson(EventJson eventJson) { Event event = new Event(); event.title = eventJson.title; event.beginDateAndTime = eventJson.begin_date + " " + eventJson.begin_time; return event; } @ToJson EventJson eventToJson(Event event) { EventJson json = new EventJson(); json.title = event.title; json.begin_date = event.beginDateAndTime.substring(0, 8); json.begin_time = event.beginDateAndTime.substring(9, 14); return json; } }
источник

AN

Alexander Nozik in Kotlin Community
Alex Wells
а в чем разница то? moshi предоставляет удобный механизм - аннотируешь метод сериализации и десерилизации и все готово. Jackson этого не делает (либо я не разобрался - так или иначе, с moshi проще). Механизм с аннотациями проще и читабельней.
Особой нет. Они работают одинаково
источник

AE

Alexandr Emelyanov in Kotlin Community
Alex Wells
к тому же: большинство обьектов конвертируются 1в1 и только несколько требуют кастомных сериалайзеров/кастомных названий филдов. Опять же несколько аннотаций в нужных местах имхо читабельней чем что-либо еще
А с Jackson не так?
источник

AW

Alex Wells in Kotlin Community
Alexandr Emelyanov
Это?

class EventJsonAdapter { @FromJson Event eventFromJson(EventJson eventJson) { Event event = new Event(); event.title = eventJson.title; event.beginDateAndTime = eventJson.begin_date + " " + eventJson.begin_time; return event; } @ToJson EventJson eventToJson(Event event) { EventJson json = new EventJson(); json.title = event.title; json.begin_date = event.beginDateAndTime.substring(0, 8); json.begin_time = event.beginDateAndTime.substring(9, 14); return json; } }
это
источник

AW

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

AE

Alexandr Emelyanov in Kotlin Community
Это не задача сериализатора) это маппер, для этого есть mapstruct. А вообще в данном случае просто вешаются аннотации с именами в json...
источник