Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
在6个月前关闭。
Improve this question
我正在决定是使用Moshi by square还是Gson来序列化和反序列化模型数据。
我一直不喜欢Gson的一件事是我认为它使用了在Android上可能很慢的反射功能?莫希也使用反射吗?
Moshi vs Gson有哪些优缺点?
我认为它们相似。例如,以创建
并使用它像在gson中一样注册它:
我猜它的优点是在typeAdapter中使用了注释。我正在寻找是否可以切换到Moshi来获得任何性能提升。 设置为reading field names时,Moshi不必分配字符串或进行哈希查找。 Moshi将输入作为UTF-8字节序列扫描,并懒惰地转换为Java字符。例如,它不需要将整数文字转换为char。
如果您已经在使用Okio流,则这些优化的优势尤其明显。 Retrofit和OkHttp的用户特别受益于Moshi。
在我的帖子Moshi, another JSON Processor中进一步讨论了Moshi的起源。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
在6个月前关闭。
Improve this question
我正在决定是使用Moshi by square还是Gson来序列化和反序列化模型数据。
我一直不喜欢Gson的一件事是我认为它使用了在Android上可能很慢的反射功能?莫希也使用反射吗?
Moshi vs Gson有哪些优缺点?
我认为它们相似。例如,以创建
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);
}
}
}
并使用它像在gson中一样注册它:
Moshi moshi = new Moshi.Builder()
.add(new CardAdapter())
.build();
我猜它的优点是在typeAdapter中使用了注释。我正在寻找是否可以切换到Moshi来获得任何性能提升。
最佳答案
Moshi使用Okio优化了Gson所没有的一些功能。
如果您已经在使用Okio流,则这些优化的优势尤其明显。 Retrofit和OkHttp的用户特别受益于Moshi。
在我的帖子Moshi, another JSON Processor中进一步讨论了Moshi的起源。
关于android - Android中的Moshi vs Gson ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43577623/
10-09 06:03