Decyduję się, czy używać Moshi by square lub Gson do serializacji i deserializacji danych modelu.Moshi vs Gson w Androidzie
Jedną rzeczą, której zawsze nie lubiłem w Gsonie, jest to, że używa refleksji, która może być powolna na Androidzie? Czy Moshi też używa odbicia?
Jakie są zalety i wady Moshi vs Gson?
Widzę je jako podobne. Weźmy na przykład to stwierdzenie, że tworzy 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);
}
}
}
i używać go zarejestrować go podobnie jak w gson:
Moshi moshi = new Moshi.Builder()
.add(new CardAdapter())
.build();
Chyba zalety byłaby adnotacja wykorzystywane w typeAdapter. Zamierzam dowiedzieć się, czy są jakieś zyski wydajności, jeśli przejdę na Moshi.
Czy używa refleksji – j2emanue
@ j2emanue Jako szczegół wdrożenia, domyślne JsonAdapters dla twoich niestandardowych klas ustawi pola z refleksami. –