Moshi vs Gson在Android中

j2emanue:

我正在决定是使用Square还是Gson的Moshi来序列化和反序列化模型数据。

我一直不喜欢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来提高性能。

杰西·威尔逊(Jesse Wilson):

Moshi使用Okio来优化Gson不做的一些事情。

  • 读取字段名称时,Moshi不必分配字符串或进行哈希查找。
  • Moshi将输入扫描为UTF-8字节序列,然后懒惰地转换为Java字符。例如,它不需要将整数文字转换为char。

如果您已经在使用Okio流,则这些优化的优势尤其明显。RetrofitOkHttp的用户特别受益于Moshi。

关于Moshi起源的进一步讨论在我的文章Moshi,另一个JSON Processor中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章