加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 18:57:18 所属栏目:百科 来源:网络整理
导读:一、android 常用的json解析方式 Android 开发上常用的json解析方式有:Gson, fastJson,jackson。 因为jackjson jar包会比较大点(700+k),Gson和fastjson的功能又基本够用,所以一直没正式用过jackjson。自己有用的就是Gson和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,"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,"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 $

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读