一、android 常用的json解析方式

Android 开发上常用的json解析方式有:Gson, fastJson,jackson。 
因为jackjson jar包会比较大点(700+k),Gson和fastjson的功能又基本够用,所以一直没正式用过jackjson。自己有用的就是Gson和fastjson

二、基本使用方式

Gson

//解成对象Fromat mFromat = new Gson().fromJson(jsonStringObject, Fromat.class);//解成对象组LinkedList<Fromat> list = new LinkedList<MainActivity.Fromat>(); Type type = new TypeToken<LinkedList<Fromat>>(){}.getType(); list = new Gson().fromJson(jsonStringArray, type); //泛型统一封装时 需要传个 type 进来 new TypeToken<LinkedList<Fromat>>(){}.getType(); fromJson(String json, Type typeOfT) public <T> T fromJson(String json, Type typeOfT)

fastJson

//解析成对象Fromat fastjsonObject = JSON.parseObject(jsonObjectString, Fromat.class);//解析成对象组List<Fromat> fastjsonArray = JSON.parseArray(jsonArrayString, Fromat.class);//泛型统一封装时 需要传个 type 进来 或者TypeReference 也可以也是调用的type new TypeReference<Fromat>() {} new TypeReference<Fromat>() {}.getType() public static <T> T parseObject(String input, Type clazz, Feature... features) public static <T> T parseObject(String text, TypeReference<T> type, Feature... features)

三、fastjson 的优点

可维护性 > 正确性 > 性能 
说点实在的,Gson在遇到 {} [] 这种json关键字的时候直接解析为string 报错。fastjson是可以解析 
demo代码:

String jsonObjectString = "{\"status\": 0}";String jsonArrayString = "[{\"status\": 0}]";//fastJson String fastjsonObject = JSON.parseObject(jsonObjectString, String.class); Log.d("test", "fastJson string {} = " + fastjsonObject); String fastjsonArray = JSON.parseObject(jsonArrayString, String.class); Log.d("test", "fastJson string [] = " + fastjsonArray); //Gson try { String gsonObject = new Gson().fromJson(jsonObjectString, String.class); Log.d("test", "gson string {} = " + gsonObject); }catch (Exception e){ Log.d("test", "gson string {} = " + e); } try { String gsonArray = new Gson().fromJson(jsonArrayString, String.class); Log.d("test", "gson string {} = " + gsonArray); }catch (Exception e){ Log.d("test", "gson string [] = " + e); }

结果: D/test: fastJson string {} = {“status”:0} D/test: fastJson string [] = [{“status”:0}] D/test: gson string {} = com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: D/test: gson string [] = com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 2 path $

from: http://www.voidcn.com/blog/lckj686/article/p-6000736.html

Gson 与 fastJson 在使用上的差异(fastJson的优点)相关推荐

  1. python使用matplotlib可视化间断条形图、使用broken_barh函数可视化间断条形图、可视化定性数据的相同指标在时间维度上的差异

    python使用matplotlib可视化间断条形图.使用broken_barh函数可视化间断条形图.可视化定性数据的相同指标在时间维度上的差异 目录 python使用matplotlib可视化间断条 ...

  2. Java语言与C++语言在作用域上的差异

    Java语言与C++语言是目前最流行的编程语言.两者的编程思想虽然有一定的共同性,但是在很多方面仍然存在着比较大的差异.如两者在作用域上仍然存在着很大的差异.下面笔者就分析一下这两门语言在作用域上的差 ...

  3. Bandizip 7.16和winRAR在文件右键压缩功能上的差异

    Bandizip 7.16和winRAR在文件右键压缩功能上的差异 (1)winRAR右键对一个包含若干文件的文件夹(假设文件夹名字为test)进行压缩,无论是采用"添加到压缩文件夹&quo ...

  4. 【大话GSM】WCDMA和LTE在提供数据和语音业务上的差异

    WCDMA和LTE在提供数据和语音业务上的差异 以下两篇文章的内容来自网络,部分内容有重复,但在阐述"WCDMA和LTE在提供数据和语音业务上的差异"总结的都很好: 文章1:原题目 ...

  5. 【案例分析】Linux和Windows在TCP数据包上的差异+网闸兼容问题引发的TCP连接失败故障分析

    1.前言 出于项目保密原因,本文所提及的IP地址并非真实IP地址,其余技术细节均与案例实际环境相同,供学习交流参考. 2.案例背景 我们前段时间接到项目现场工程师电话,对方称他们新上架了一台Linux ...

  6. Java和C++在细节上的差异(转)

    Java的基本程序结构.关键字.操作符都和C/C++非常相似,以下为主要的几点区别: 一.基本程序设计结构: Java的基本程序结构.关键字.操作符都和C/C++非常相似,以下为主要的几点区别: 1. ...

  7. 浅谈nodejs与php设计构思层面上的差异

    nodejs最近火的一塌糊涂,那为什么它可以成为千百程序员的新宠呢? 难道只是因为把js搬到了服务端?如果仅仅是这样是迁移了一个运行环境和增加几个模块的话我想完全不可能会得到喜新厌旧的程序员的青睐 n ...

  8. 贫富人家的孩子在思维方式上有差异吗?

    作者:Hilary1019 链接:https://www.zhihu.com/question/20785337/answer/26052573 来源:知乎 著作权归作者所有,转载请联系作者获得授权. ...

  9. 分析对比新浪微博、微信朋友圈、QQ动态在「内容发布」这一功能上的差异,并简要分析其原因。

    新浪微博.微信朋友圈.QQ动态都具有让用户个体发布内容的功能,但在产品的表现上却不尽相同: 功能设计对比: 本文在对比这三者关于发布功能的产品设计时 ,主要关注发布纯文字消息和发布图文消息两种,三者发 ...

  10. 关于C生成的汇编与C++生成的汇编在函数名称上的差异

    最近用到ucos,这个RTOS本身是用C语言和部分汇编编写,而自己又打算用C++来写应用,在其中遇到几个问题,一番折腾之后,让我更加深刻认识到了在一些一般不注意的细节上,C与C++的不同.     1 ...

最新文章

  1. C/C++中switch用法的一种替换方式
  2. java web编码详解_java web 开发 编码问题详解
  3. xamarin使用mysql_[开源] .NetCore .NetFramework Xamarin 使用 ORM FreeSql 访问 MySql
  4. numpy学习:安装anaconda及使用
  5. T511K表之工资常量SIINS的用途
  6. JZOJ 2413. 【NOI2005】维护数列
  7. java分页查询_面试官:数据量很大,分页查询很慢,有什么优化方案?
  8. 快速配置 Samba 将 Linux 目录映射为 Windows 驱动器
  9. Linux Kettle 闪退问题解决方案
  10. f分布表完整图a=0.05_2019年05月16日,沪深A股股票分析
  11. Linux断点方法,一种基于Linux问题断点的定位方法及系统与流程
  12. java 接收前台富文本_前后端分离ueditor富文本编辑器的使用-Java版本
  13. 将VMware迁移到阿里云分几步?!
  14. meterpreter里面cmd乱码解决方法chcp 65001
  15. w10运行游戏计算机中丢失xinput1-3.dll,win10游戏缺少xinput1_3.dll如何修复_win10电脑找不到xinput1_3.dll怎么解决...
  16. 利用openFrameWork、ofxFaceTrack制作的虚拟眼镜加载系统
  17. win8计算机无法安装打印机驱动程序,win8系统安装打印机驱动失败怎么办|win8系统安装打印机驱动失败的解决方法...
  18. 程序员因接外包坐牢 456 天!两万字长文揭露心酸真实经历
  19. JS间隔指定字符数后面插入
  20. 结构方程模型:技术接受度模型TAM2

热门文章

  1. 什么平台给了社区站长机会
  2. ARM嵌入式系统开发之接收函数的实现
  3. 博文视点官方blog正式开张~~~~~~~~~
  4. 6.2GPT意境级讲解
  5. 递推关系中的数列通项
  6. 坐标转换计算七参数matlab代码,坐标系转换:已知控制点计算七参数并对数据批量转换...
  7. compile函数 java_正则表达式--关于Java中Pattern.compile函数的相关解释
  8. Android 《第1行代码》-所有知识点架构
  9. c#:无限极树形结构
  10. 201521123115 《Java程序设计》第3周学习总结