Я'м принимая решение о том, следует ли использовать Моши по площади или Gson для сериализации и десериализации модели данных.
одна вещь, которую я всегда не любил о Gson, я думаю, он использует отражение, которое может быть медленным на Android? Моши ли использовать отражение также?
Какие плюсы и минусы Моши против Дсын?
Я вижу в них похожие. взять к примеру это заявление, что создает typeAdapter:
class CardAdapter {
@ToJson String toJson(Card card) {
return card.rank + card.suit.name().substring(0, 1);
}
@FromJson Card fromJson(String card) {
if (card.length() != 2) throw new JsonDataException("Unknown card: " + card);
char rank = card.charAt(0);
switch (card.charAt(1)) {
case 'C': return new Card(rank, Suit.CLUBS);
case 'D': return new Card(rank, Suit.DIAMONDS);
case 'H': return new Card(rank, Suit.HEARTS);
case 'S': return new Card(rank, Suit.SPADES);
default: throw new JsonDataException("unknown suit: " + card);
}
}
}
и использовать его зарегистрировать его так же, как в дсын:
Moshi moshi = new Moshi.Builder()
.add(new CardAdapter())
.build();
Я думаю, плюсов было бы в аннотации используется в typeAdapter. Я'м глядя, чтобы выяснить, если есть какие-либо прирост производительности, если я переключусь в Моши.
Моши использует Окио для оптимизации несколько вещей, которые Дсын не.
Преимущества этих оптимизаций, особенно если вы уже используете Окио потоков. Пользователи дооснащение и OkHttp, в частности, выигрывают от Моши.
Дальнейшее обсуждение вопроса о происхождении Моши в моем посте, Моши, другой процессор в JSON.
По данным swankjesse'ы комментарий на Reddit:
Я горжусь своей работой на Дсын, но и разочарованы некоторые ее недостатки. Я хотел обратиться, но не как “Дсын 3.0”, отчасти потому, что я больше не работаю в Google. Джейк, Скотт, Эрик, и я создал Моши для решения различных ограничений Дсын. Вот десять причин, предпочитают Моши за Дсын:
Предстоящий Котлин поддержки.
Отбор, как @HexColor инт разрешить множественные представления JSON для одного типа Java.
В @метод toJSON и FromJson позволяют легко писать и тестировать пользовательские JSON и адаптеры.
JsonAdapter.failOnUnknown() позволяет отклонять неожиданные данные JSON.
Предсказуемо исключения. Моши бросает IOException по проблемам Ио и JsonDataException на несоответствие типов. Дсын повсюду.
JsonReader.selectName() избегает ненужной кодировке UTF-8 декодирования и строка распределения в общем случае.
Вы будете грузить apk меньшего размера. Дсын составляет 227 КБ, Моши+Окио вместе 200 Кб.
Моши не утечка деталей реализации типа платформы на ваш закодированный в JSON. Это заставляет меня бояться Дсын: дсын.метод toJSON(SimpleTimeZone.getTimeZone (на"мск" - а))
Моши не странно в HTML сбегая по умолчанию. Посмотри на кодировку Дсын по умолчанию "и 12 & 5 = 4" в пример.
Никаких сломанных дата адаптер установлен по умолчанию.
Если вы пишете новый код, я настоятельно рекомендую начать с Моши. Если у вас есть существующий проект с Gson, вы должны обновить, если это будет простым и не рискованным. В противном случае, палка с Gson! Я делаю все возможное, чтобы убедиться, что он остается совместимы и надежны.