Moshi vs在Android中的Gson

技术标签: 安卓  格森  反序列化  MOSHI.

我决定是否使用 Moshi by Square. 或者gson序列化和反序列化模型数据。

有一件事我总是不喜欢GSON是我认为它使用的反射可以在Android上慢? moshi也使用反思吗?

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();

我猜这些优势将是在粉碎机中使用的注释。如果我切换到MOSHI,我想知道是否有任何绩效增长。

看答案

Moshi使用Okio优化了Gson没有的一些事情。

  • 什么时候 阅读字段名称,MOSHI不必分配字符串或DO散列查找。
  • MOSHI将输入扫描为UTF-8字节序列,懒洋洋地转换为Java Chars。例如,它永远不需要将整数文字转换为字符。

如果您已经使用Okio Streams,这些优化的好处是特别明显的。用户的 改造Okhttp. 特别是来自MOSHI的益处。

关于MOSHI的起源进一步讨论我的帖子, Moshi,另一个JSON处理器.


智能推荐

CGAL在VS中的配置

说明:CGAL是C++的一个几何计算库,我仅仅想在C/C++文件中调用CGAL中定义好的函数,所以没有安装qt。 vs2015   CGAL4.13  boost1.69  (注:安装CGAL的时候一定要选上安装gmp) 前提,上述已安装完成。安装教程参考的:https://blog.csdn.net/u012876599/article/details/5...

浅谈NuGet在VS中的运用

一     概述 在我们讲解NuGet前,我们先来看看一个例子。 1.例子:  假设现在开发一套系统,其中前端框架我们选择Bootstrap,由于选择Bootstrap作为前端框架,因此,在项目中,我们需要引入Bootstrap相关文件,大致会执行如下操作。 步骤一:下载Bootstrap文件 输入Bootstrap官网域名   http...

svn在vs中的安装

前几天手残,把VS重新装了一下,然后svn就没有了,几经磨难终于好了: (1)首先必须在电脑上安装SVN (2)然后再vs里的“工具”-“扩展和更新”-“联机”中搜索SVN进行下载 (3)然后安装成功后,重启vs (4)然后安装SVN (5)然后再“工具”-“选项”-&ldquo...

Android-Gson小总

几乎每次项目中都要用到Gson来解析json数据,今天想做个总结。ok,现在我们先来了解一下JSONObject和JsonObject的区别(我个人总结了三点):上图。 可以一眼看到他们的不同: (1)不同包。JSONObject是android自带的org.json包中,而JsonObject则是google.gson包下的需要添加build.gradle依赖:implementation'co...

Android-Gson使用详解

Gson的基本用法 Gson解析默认使用方法很简单,将json转换成对象用Gson.fromJson(),将对象转化成json用Gson.toJson()即可。Gson解析解析数组和List也是用相同的方法。当解析List的时候,可能会遇到泛型操作。此时需要使用TypeToken对象来实现泛型支持。 public static void main(String[]&n...

猜你喜欢

gson的简单使用

gson的简单使用—json数据和对应类之间的互相转换 最近项目上用到json数据,简单处理json串和生成json串的功能,自己学习了一下,做了一个简单的入门步骤。 使用的是Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。 Gson很熟练的大大就不需要看了… 文章目录 gson的简单使用&mdas...

计算机系统常用编码介绍

常用编码 二进制编码 自然二进制码 有权码 循环二进制码 无权码,卡诺图化简可以用到循环二进制码 BCD码 介绍 把十进制数的各个数码用二进制码的形式表现出来,这便是用二进制代码对十进制数进行编码,简称BCD码。BCD码具有二进制码的形式(4位二进制码),又有十进制数的特点(每四位二进制码是1位十进制码) 常用BCD码 8421码 有权码,8421码也就是自然二进制码 余3码 在8421码的基础上...

好记性不如烂笔头,记我在用友ERP重装IIS服务碰到的一些问题和心得。

先记录文字版的,有时间再上图。 过程是这样的。今天服务器突然断电,导致不能进系统。然后启动时按F8。选择 “进入最后一次正常启动加载项。。。” 可以顺利进系统。 然后点U8登入的时候提示:用友U8   选择数据源提示:读取数据源出现未知错误:〖System.Runtime.Serialization.SerializationException〗 最后查了多方资料...

网友不给力?win10预览版向企业开放

Insider Preview一直以来都是微软windows系统中正式版发布前,预览版发送版本,这个版本只对部分人群开放,类似于一个试点工程,如果用户对系统有意见,可以通过微软官方渠道提供反馈,如果同样的反馈达到一定的量级,微软就会对即将发布的正式版进行改进,吸纳这个建议。但需要注意的是,过去这个功能并没有对windows10企业版、教育版、IOT等版本开放。 实际上企业版windows10毫无疑...

云ids的设计方案

概述 为了搭建云IDS平台,需要选型合适的虚拟化方案,以及对相应部署做一定的优化。基本设计架构为,在以Centos操作系统安装的宿主机中再部署IDS虚拟机(基于Centos操作系统)。 本设计文档所述的设计方案,基于以下环境: Intel x86架构的cpu,支持intel VT和VT-d BIOS中enable VT和VT-d BIOS中建议开启Intel Hyper-Threading Tec...

问答精选

PHP OOP UNSET object from class in __construct

I have some classes from which I create objects. In the __construct function I check the properties. If they do not match I would like to delete the created object. Thanks! You need to unset the creat...

Reading NSUserDefault bool

I have a problem where I'm trying to register a bool as an NSUserDefault. I then want to be able to read this bool value later on. The issue is that when I read the value its not picking it up as a YE...

deleting values with overlapping dates

I have table in an MS Access database that looks like this: I am trying to delete duplicate symbols and directions that have overlapping start_val and end_val and the highest AW. For example in the ta...

Advice on PHP OOP code

In a PHP project I have three layers (Logical) UI : Place to store UI php pages. ex: ManageUsers.php Code : All Entity Classes Related to system. ex: User.php DataAccess : Data Access Classes for Enti...

Alternate class in a for loop?

I'm cycling through a list using {% for item in list %} and I want to output something like this: with the intention of styling the alternate lines a different colour. Django (1.3) has no mod or div t...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答