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

Ребят. Приходит в ответе Json в котором один айтем имеет

херову тучу вложеных обьектов/полей.
Мне нужно брать только несколько из них. Какой самый быстрый способ это сделать ?

Обычно использовал конвертеры json to kotlin data class. Но в этом случае явно не вариант.

38 ответов

13 просмотров

Gson

повесил в закладки на изучение :D спасибо

Опиши руками класс с нужными полями. (Дата классы тут вообще не при чём)

Ну моши тоже недостатков не лишен, для него GSON гораздо проще будет (плюс меньше возни с опциональностью полей)

Что там за возня? Моши по сути Гсон 2.0

Ну фиг знает, начнем с того, что без лишнего головняка можно сократить количество кода при связке GSON + Retrofit 2 — просто задавая фабрику конвертера (который сами squareup и выкатили). Возможно, для моши тоже есть такая приятная плюшка — тут, признаюсь, не влезал. Да и Moshi подтягивать предпочитаю все же на крупных проектах, иногда на средних (зависит от задач)

Тоже есть конвертер. Что это за мантра про крупные проекты, где грань и в чём смысл?

Грань и понятие крупного проекта в любом случае у каждого свои. Все же я считаю Moshi куда более мощным и гибким инструментом, нежели GSON — и потому лучше его использовать для соответствующих задач. Это как холивар между Koin и Dagger 2

что-то не могу представить себе ситуацию, в которой один сериализатор даст значительное преимущество перед другим. Все что <300мс не считаю

Крупный проект, это когда апкашка с хелловорлдом из-за подключения всего что есть стала больше 100 мб 🙂

Дело не только в скорости работы — а в сложности структур данных, их объеме, в целом в дизайне API и так далее

Там одинаково: воткнул конвертер и забыл.

структуры - да; как объем играет роль? api вообще не при делах, хоть из файлов брать

Не откуда брать, а дизайн API.

причем тут дизайн api? сериализатору все равно откуда пришли данные

kotlinx-serialization?

+

сложный вопрос) Про моши можно легко сказать, что оно заменяет гсон. А Kotlinx.serialization — сильно другая технология.

ну почему, просто kotlinx-serialization ещё и не только в JSON может, но при этом это в него не впилено, а добавляется отдельными депендеси, так что оверхэда не получается

В моши вроде придётся для каждого поля задавать ключ для декодирования, а гсон умеет в fromSnakeCase decoding strategy

уже не нужно)

почему сильно другая технология?)

канеш там много всяких штук, которые могут быть лишними, но в целом никакого оверхеда эта либа не добавляет

я ничего не говорю про оверхед

а что тогда другого?

А подскажи куда смотреть

подход другой. Moshi — практически drop-in replacement

Просто при описании dto не указывай ключи — если имена полей совпадают в dto и ответе, то обработаются автоматом (можно комбинировать в рамках dto)

Охуенчик. Больше ничего другого не надо указывать?

это как? что там аннотации, что тут аннотации

А в гсоне что там надо дописывать?

дописывать куда, к чему, для чего?

API у гсона и моши схожий, аннотации одинаково называются, принцип работы одинаковый

Дело же не только в скорости, но ещё и в фича сетах. Правда я не разбирался глубоко в разнице

А расскажи почему ты так думаешь (почему это факт). Либо брось статьей. Если много прошу - скажи, я загуглю)

потому что оно генерирует IR, то есть работает в корне иначе

Хм, интересно) спасибо, посмотрю!

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта