
Vladimir
23.10.2018
12:18:43

Alexandr
23.10.2018
12:20:11

Google

Andrey
23.10.2018
12:21:00

Vladimir
23.10.2018
12:21:26

Quantum Harmonizer
23.10.2018
12:21:27

Alexandr
23.10.2018
12:21:38
jibx в руки фанатам такого подхода

Andrey
23.10.2018
12:22:15
Если уж совсем честно разобраться, любой компилятор генерирует из кода на одном языке код на другом.

Mikhail
23.10.2018
12:22:28

Kirill
23.10.2018
12:22:34

Vladimir
23.10.2018
12:23:01

Quantum Harmonizer
23.10.2018
12:23:02

Alexandr
23.10.2018
12:23:06
жалко помер https://github.com/jibx/jibx

Quantum Harmonizer
23.10.2018
12:23:13

Kirill
23.10.2018
12:24:09

Quantum Harmonizer
23.10.2018
12:24:22

Google

Andrey
23.10.2018
12:25:15
jibx в руки фанатам такого подхода
Вы так говорите jibx, будто в этом есть что-то плохое.
Поясните, чем оно вам так не угодило?
Какую боль от использования ощутили?
Почему зареклись использовать до такой степени, что аж фанатам в руки предлагаете?

Alexey
23.10.2018
12:28:15
У нас тайпклассы
Как раз в scala уже давно разделили dto и описания для сериализации/десириализации

Quantum Harmonizer
23.10.2018
12:30:17
Вообще, работать с JsonObject'ами — метод, по отстойности перегоняющий рефлексию.

Kirill
23.10.2018
12:31:15

Vladimir
23.10.2018
12:32:05

Quantum Harmonizer
23.10.2018
12:32:41

Alexey
23.10.2018
12:32:58
Можно примеры?
Ну мы пишем условно вот так:
case class Foo(bar: Int, baz: String)
object Foo {
implicit val fooReader: JsonReader[Foo] = jsonReader[Foo] // тут макросы, но можно и руками
implicit val fooReader: JsonWriter[Foo] = jsonWriter[Foo]
}
либо эквивалентную запись
@derive(jsonReader, jsonWriter)
case class Foo(bar: Int, baz: String)

Quantum Harmonizer
23.10.2018
12:33:21

Alexey
23.10.2018
12:33:26
А потом в коде что то вроде
someJsonString.jsonAs[Foo]

Egor
23.10.2018
12:33:26
*прилетел*
https://arrow-kt.io/docs/optics/lens/
*улетел*

Alexey
23.10.2018
12:33:41

Quantum Harmonizer
23.10.2018
12:33:51

Alexey
23.10.2018
12:34:16
Главное что это уже давно разделено, котлеты отдельны мухи отдельно - типы отдельны описания отдельно

Quantum Harmonizer
23.10.2018
12:34:49
риальне у меня линзы получились, забавно

Andrey
23.10.2018
12:35:07
а, ясно, compile-time reflection :)
compile time reflection - оксюморон.
In computer science, reflection is the ability of a computer program to examine, introspect, and modify its own structure and behavior at runtime.
https://en.wikipedia.org/wiki/Reflection_(computer_programming)

Google

Quantum Harmonizer
23.10.2018
12:35:33

Alexey
23.10.2018
12:35:51

Andrey
23.10.2018
12:36:38

Alexey
23.10.2018
12:36:55
В скалке

Vladimir
23.10.2018
12:36:57

Quantum Harmonizer
23.10.2018
12:38:24

Andrey
23.10.2018
12:39:08
В скалке
Ну вообще compile time reflection - это code instrumentation. Работа с AST средствами языка на этапе компиляции (макросы всякие и иже с ним)

Roman
23.10.2018
12:39:17

Alexey
23.10.2018
12:39:33

Quantum Harmonizer
23.10.2018
12:39:42

Andrey
23.10.2018
12:40:33
о них и речь
Ну reflection - это другое. Это работа с мета информацией о типах в рантайме

Vladimir
23.10.2018
12:40:46

Den
23.10.2018
12:40:49
У вас тут можно мпрашивать вопросы по разработке под андроид?

You
23.10.2018
12:41:04

Quantum Harmonizer
23.10.2018
12:41:04

Andrey
23.10.2018
12:42:17

Quantum Harmonizer
23.10.2018
12:42:52

Vladimir
23.10.2018
12:43:10

Egor
23.10.2018
12:43:20

Quantum Harmonizer
23.10.2018
12:43:42

Google

Andrey
23.10.2018
12:44:16

Quantum Harmonizer
23.10.2018
12:44:56
и ещё Boolean и null, но не суть

Egor
23.10.2018
12:45:21

Andrey
23.10.2018
12:46:12

Quantum Harmonizer
23.10.2018
12:46:13

Egor
23.10.2018
12:46:39
По-моему, есть даже парсеры, которые умеют json-массивы перекидывать в мапы вида {1:"...", 2:"..."}

Quantum Harmonizer
23.10.2018
12:47:34

Andrey
23.10.2018
12:47:36

Vladimir
23.10.2018
12:47:53

Quantum Harmonizer
23.10.2018
12:48:45

Konstantin
23.10.2018
12:49:03
откуда инфа

Egor
23.10.2018
12:50:15
откуда инфа
от фронтов, лол
Сколько проектов не видел, везде есть что-то типа
data class SomethingResponse {
@Json("result") val result: List<SomeObject>
}

Vladimir
23.10.2018
12:50:18

Quantum Harmonizer
23.10.2018
12:50:31

Egor
23.10.2018
12:50:45
Потому что приходит пресловутый объект
{
"result": [ ... ]
}

Vladimir
23.10.2018
12:51:15
Не вижу ничего костыльного. Завтра там появится ещё одно поле, и обёртка уже не будет выглядеть вырожденной.

Konstantin
23.10.2018
12:51:20
да это жостка. массив в корне json = норма
завернуть респонз апишки в конверт с метаинфой = норма

Quantum Harmonizer
23.10.2018
12:51:41

Google

Konstantin
23.10.2018
12:51:46
передать метаинфу в заголовках = норма
остальное от лукавого

Vladimir
23.10.2018
12:52:27

Konstantin
23.10.2018
12:52:29

Quantum Harmonizer
23.10.2018
12:53:37

Vladimir
23.10.2018
12:54:58
Это не ровное место, а изменение return type.
Ну так чтобы его не менять, а расширять лучше и возвращать объект изначально.
А в Java ещё и будет меньше заморочек с дженериками при использовании всяких мапперов, в качестве бонуса.

Quantum Harmonizer
23.10.2018
12:55:24

Vladimir
23.10.2018
12:56:17

Quantum Harmonizer
23.10.2018
12:56:53

Vladimir
23.10.2018
12:56:53

Quantum Harmonizer
23.10.2018
12:57:15

Konstantin
23.10.2018
12:57:24

Quantum Harmonizer
23.10.2018
12:57:35
есть вообще отличная практика запрашивать на стороне клиента список требуемых полей

Vladimir
23.10.2018
12:58:00

Quantum Harmonizer
23.10.2018
12:58:19

Egor
23.10.2018
12:58:19

Vladimir
23.10.2018
12:58:27

Quantum Harmonizer
23.10.2018
12:58:40

Vladimir
23.10.2018
12:58:50