херову тучу вложеных обьектов/полей.
Мне нужно брать только несколько из них. Какой самый быстрый способ это сделать ?
Обычно использовал конвертеры json to kotlin data class. Но в этом случае явно не вариант.
Gson
Moshi
повесил в закладки на изучение :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, то есть работает в корне иначе
Хм, интересно) спасибо, посмотрю!
Обсуждают сегодня