FastJson簡單使用

jopen 10年前發布 | 158K 次閱讀 JSON開發包 fastjson

??在工作中,經常客服端需要和服務端進行通信,目前很多項目都采用JSON的方式進行數據傳輸,簡單的參數可以通過手動拼接JSON字符串,但如果請求的參數過多,采用手動拼接JSON字符串,出錯率就非常大了。并且工作效率也特別低。

我在網上看了一些開源的JSON框架,比如Google提供的Gson,Jackson,FastJson等框架。

經過測試,個人覺得FastJson執行效率比較高,而且簡單易用。
FastJson不依賴于第三方包, 直接可以運行在Java JDK1.5之上,FastJson完全支持http://json.org的標準,支持各種JDK類型,包括基本類型、JavaBean、Collection、Map、Enum、泛型等
還支持循環引用。
FastJson項目是開源的:Fastjson代碼托管在github.org上,項目地址是 https://github.com/AlibabaTech/fastjson

一個JSON庫涉及的最基本功能就是序列化和反序列化。Fastjson支持java bean的直接序列化。使用com.alibaba.fastjson.JSON這個類進行序列化和反序列化。

 

一。簡單的序列化

    pubic class UserInfo implements Serializable{  
     private String name;  
     private int age;  
     public void setName(String name){  
      this.name=name;  
     }  
     public String getName(){  
      return name;  
     }  

     public void setAge(int age){  
      this.age=age;  
     }  
     public int getAge(){  
      return age;  
     }  
    }   

    public class TestOne{  

     public static void main(String[] args){  
      UserInfo info=new UserInfo();  
      info.setName("zhangsan");  
      info.setAge(24);  
      //將對象轉換為JSON字符串  
      String str_json=JSON.toJSONString(info);  
      System.out.println("JSON="+str_json);  
     }  

    }  

二.復雜的數據類型

    public static void test2() {  

      HashMap<String, Object> map = new HashMap<String, Object>();  
      map.put("username", "zhangsan");  
      map.put("age", 24);  
      map.put("sex", "男");  

      //map集合  
      HashMap<String, Object> temp = new HashMap<String, Object>();  
      temp.put("name", "xiaohong");  
      temp.put("age", "23");  
      map.put("girlInfo", temp);  

      //list集合  
      List<String> list = new ArrayList<String>();  
      list.add("爬山");  
      list.add("騎車");  
      list.add("旅游");  
      map.put("hobby", list);  

      /*JSON 序列化,默認序列化出的JSON字符串中鍵值對是使用雙引號,如果需要單引號的JSON字符串, [eg:String jsonString = JSON.toJSONString(map,   SerializerFeature.UseSingleQuotes);] 
       *fastjson序列化時可以選擇的SerializerFeature有十幾個屬性,你可以按照自己的需要去選擇使用。  
       */  
      String jsonString = JSON.toJSONString(map);  
      System.out.println("JSON=" + jsonString);  

    }  

三.反序列化

    public void test3(){  

     String json="{\"name\":\"chenggang\",\"age\":24}";  
     //反序列化  
     UserInfo userInfo=JSON.parseObject(json,UserInfo.class);  
     System.out.println("name:"+userInfo.getName()+", age:"+userInfo.getAge());  

    }  
    /**泛型的反序列化*/  
    public static void test4(){  
      String json="{\"user\":{\"name\":\"zhangsan\",\"age\":25}}";  
      Map<String, UserInfoBean> map = JSON.parseObject(json, new TypeReference<Map<String, UserInfoBean>>(){});  
      System.out.println(map.get("user"));  
     }  

//同理, json字符串中可以嵌套各種數據類型。

 

四.日期格式化

    public void test5(){  

      Date date=new Date();    
      //輸出毫秒值  
      System.out.println(JSON.toJSONString(date));  
      //默認格式為yyyy-MM-dd HH:mm:ss    
      System.out.println(JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat));  
      //根據自定義格式輸出日期   
      System.out.println(JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));  

    }  



這里舉了幾個簡單的例子, 其它特殊要求可以根據FastJson的方法的說明,進行選擇。

來自:http://blog.csdn.net/yuanjian19900610/article/details/37737087

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!