zoukankan      html  css  js  c++  java
  • Gson和FastJson

    一、来源

      Gson出自Google,不需要例外额外的jar,能够直接跑在JDK上,主要为toJson与fromJson两个转换函数,在功能上面无可挑剔,但是性能上面比FastJson有所差距。

      FastJson出自阿里巴巴,无依赖,不需要例外额外的jar,能够直接跑在JDK上,在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用,但是解析速度极快,超越所有的类库。

    二、简单用法

      2.1、Gson

    //maven依赖
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.7</version>
    </dependency>
    
    //json与普通类型的bean之间的转换
    
    //bean转换json
    Gson gson = new Gson();
    String json = gson.toJson(obj);//obj是对象
    
    //json转换bean
    Gson gson = new Gson();
    String json = "{"id":"1","name":"geenk"}";
    Company c = gson.fromJson(json, Company.class);
    
    //json与复杂类型的bean之间的转换,比如List,Set,需要使用TypeToken
    Gson gson = new Gson();
    String json = "[{"id":"1","name":"geenk"},{"id":"2","name":"alibaba"}]";
    
    //json转换成List
    List list = gson.fromJson(json,new TypeToken<LIST>() {}.getType());
    
    //json转换成Set
    Set set = gson.fromJson(json,new TypeToken<SET>() {}.getType());

      2.2、FastJson

    //maven依赖
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.7</version>
    </dependency>
    
    //json与普通类型的bean之间的转换
    
    //bean转换json
    
    //格式化json
    JSON.toJSONString(obj,true);//obj是对象
    
    //非格式化的json
    JSON.toJSONString(obj,false);//obj是对象
    
    
    //json转换bean
    String json = "{"id":"2","name":"geenk"}";
    Company company = JSON.parseObject(json, Company.class);
    
    //添加
    company.put(key,value);
    //删除
    company.put(key);
    //判断包含
    company.contains(key);
    //获取
    company.get(key);
    
    
    //json与复杂类型的bean之间的转换,比如List,Set,需要用到TypeReference
    
    String json = "[{"id":"1","name":"geenk"},{"id":"2","name":"alibaba"}]";
    
    //将json转换成List
    List list = JSON.parseObject(json,new TypeReference<ARRAYLIST>(){});
    
    //将json转换成Set
    Set set = JSON.parseObject(json,new TypeReference<HASHSET>(){});
  • 相关阅读:
    lintcode:Palindrome Partitioning 分割回文串
    lintcode:Add Binary 二进制求和
    lintcode :Count 1 in Binary 二进制中有多少个1
    lintcode : 二叉树的最小深度
    lintcode :二叉树的最大深度
    lintcode:Binary Tree Postorder Traversal 二叉树的后序遍历
    lintcode :Binary Tree Preorder Traversal 二叉树的前序遍历
    lintcode:二叉树的中序遍历
    lintcode:Binary Search 二分查找
    lintcode:1-10题
  • 原文地址:https://www.cnblogs.com/geekdc/p/6722715.html
Copyright © 2011-2022 走看看