Gson 与 fastJson 在使用上的差异(fastJson的优点)

一、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

时间: 2024-08-28 05:13:31

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

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

Java的基本程序结构.关键字.操作符都和C/C++非常相似,以下为主要的几点区别: 一.基本程序设计结构: Java的基本程序结构.关键字.操作符都和C/C++非常相似,以下为主要的几点区别: 1. Java的原始数值型数据类型中不包含无符号类型,如c中的unsigned int. 2. 在进行移位运算时,当向左边移动时,如1 << 35, 对于int类型,由于其占有4个bytes(32bits), 因此在Java中,大于32的移位将对32取模,即1 << 35的结果等于1 &l

O2O 线下业务 和 线上业务,在特征工程上的差异

人工智能在外卖送达时预估上的应用 这篇讲清楚了 O2O 线下业务 和 线上业务,在特征工程上的差异: 原文地址:https://www.cnblogs.com/cx2016/p/11362871.html

Java 和C/C++的“语法”上的差异!

额其实认为语言语法之间是没有可比性的! 但是因为额曾经学过C/C++,而今又学Java,有赵本山说的话:“知识都学杂了!”,所以我个人总结一下,望提醒自己! Java 和C/C++的对比: Java中: double 要用%f: 布尔型:boolean: 字符型占两个字节: If , while,for 中进行真假判断时只能使用逻辑表达式,不能用数字. 较长的整数后要加L: 默认所有实数都是double类型的: 安全性高:当高级类型转换为低级类型会报错!例:想要将double转换为float,

SQL介绍(标准、在不同数据库上的差异)

SQL是用于访问和处理数据库的标准的计算机语言 使用SQL可以访问和处理数据系统中的数据,这类数据库包括:Oracle,Sybase,SQL Server,DB2,Access等等 SQL 能做什么? SQL 面向数据库执行查询 SQL 可从数据库取回数据 SQL 可在数据库中插入新的记录 SQL 可更新数据库中的数据 SQL 可从数据库删除记录 SQL 可创建新数据库 SQL 可在数据库中创建新表 SQL 可在数据库中创建存储过程 SQL 可在数据库中创建视图 SQL 可以设置表.存储过程和视

Django 2.0 与 Django1.0在内部方法上的差异

models.Customer.tags.rel 方法 对于Django1 可以通过 models.Customer.tags.to.model.objects.all() 获取一个model下的ManytoMany字段下的所有内容: 在Django2 中rel下的to方法被去掉了,直接调用to方法会报 'ManyToManyRel' object has no attribute 'to' 错误,在Django2 中可以用rel下的model方法实现相同的功能,如: models.Custom

[转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson

JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0.6.jar,对于复杂类型的转换,json-lib对于json转换成bean还有缺陷,比如

Gson 和 Fastjson 你不知道的事

背景 目前在公司负责的业务, 主要是跟JSON数据打交道, fastjson .gson都用, 他们适用于不同场景.fastjson号称是业界处理json效率最高的框架, 没有之一.但在某些场景下, 效率最高的不一定 能适合你 ~ 来, 先上两道菜 第一道普通菜 : public class User { private Long user_id; private String user_name; public User() { } public User(Long userId, Strin

各个JSON技术的比较(Jackson,Gson,Fastjson)的对比

JSON技术的调研报告 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包, 包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0.6.jar, 对于复杂类型的转换,json-lib对于json转换成bean还有缺

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的好用,今天我们为了博客的保质保量,也就不分开写,我们直接拿比较火的Gson和Fast-json来使用,末尾在进行一些分析 Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示 一.各有千秋 两大解析库的东家都是巨头,一个来自于Google官方,一个来自阿里巴巴,我们这