1. 程式人生 > >fastJson在java後臺轉換json格式資料

fastJson在java後臺轉換json格式資料

什麼事JSON?

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的資料交換語言。

現在我們就來研究一下fastJson

Fastjson是國內著名的電子商務網際網路公司阿里巴巴內部開發的用於java

後臺處理json格式資料的一個工具包,包括序列化反序列化兩部分,它具備如下特徵:

1.速度最快,測試表明,fastjson具有極快的效能,超越任其他的java json parser。包括自稱最快的jackson

2.功能強大,完全支援java bean、集合、Map、日期、Enum,支援範型,支援自省。

3.無依賴,能夠直接執行在Java SE 5.0以上版本

5.開源 (Apache 2.0)

其中包含了json資料處理的教程,jar下載地址,example樣例等。

下面給出fastJson處理json資料格式的程式碼樣例:

  1. package fastJson.test;  
  2. import com.alibaba.fastjson.JSON;  
  3. import com.alibaba.fastjson.JSONObject;  
  4. import com.alibaba.fastjson.serializer.SerializerFeature;  
  5. publicclass FastJsonTest  
  6. {  
  7.     /** 
  8.      * 序列化 
  9.      */
  10.     publicvoid toJsonString()  
  11.     {  
  12.         User user = new User("testFastJson001""maks"105);  
  13.         String text = JSON.toJSONString(user);  
  14.         System.out.println("toJsonString()方法:text=" + text);  
  15.         // 輸出結果:text={"age":105,"id":"testFastJson001","name":"maks"}
  16.     }  
  17.     /** 
  18.      * 反序列化為json物件 
  19.      */
  20.     publicvoid parseJsonObject()  
  21.     {  
  22.         String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";  
  23.         JSONObject json = JSON.parseObject(text);  
  24.         System.out.println("parseJsonObject()方法:json==" + json);  
  25.         // 輸出結果:json=={"age":105,"id":"testFastJson001","name":"maks"}
  26.     }  
  27.     /** 
  28.      * 反序列化為javaBean物件 
  29.      */
  30.     publicvoid parseBeanObject()  
  31.     {  
  32.         String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";  
  33.         User user = (User) JSON.parseObject(text, User.class);  
  34.         System.out.println("parseBeanObject()方法:user==" + user.getId() + "," + user.getName() + "," + user.getAge());  
  35.         // 輸出結果:user==testFastJson001,maks,105
  36.     }  
  37.     /** 
  38.      * 將javaBean轉化為json物件 
  39.      */
  40.     publicvoid bean2Json()  
  41.     {  
  42.         User user = new User("testFastJson001""maks"105);  
  43.         JSONObject jsonObj = (JSONObject) JSON.toJSON(user);  
  44.         System.out.println("bean2Json()方法:jsonObj==" + jsonObj);  
  45.         // 輸出結果:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}
  46.     }  
  47.     /** 
  48.      * 全序列化 直接把java bean序列化為json文字之後,能夠按照原來的型別反序列化回來。支援全序列化,需要開啟SerializerFeature.WriteClassName特性 
  49.      */
  50.     publicvoid parseJSONAndBeanEachother()  
  51.     {  
  52.         User user = new User("testFastJson001""maks"105);  
  53.         SerializerFeature[] featureArr = { SerializerFeature.WriteClassName };  
  54.         String text = JSON.toJSONString(user, featureArr);  
  55.         System.out.println("parseJSONAndBeanEachother()方法:text==" + text);  
  56.         // 輸出結果:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}
  57.         User userObj = (User) JSON.parse(text);  
  58.         System.out.println("parseJSONAndBeanEachother()方法:userObj==" + userObj.getId() + "," + userObj.getName() + "," + userObj.getAge());  
  59.         // 輸出結果:userObj==testFastJson001,maks,105
  60.     }  
  61.     publicstaticvoid main(String[] args)  
  62.     {  
  63.         FastJsonTest test = new FastJsonTest();  
  64.         // 序列化
  65.         test.toJsonString();  
  66.         // 反序列化為json物件
  67.         test.parseJsonObject();  
  68.         // 反序列化為javaBean物件
  69.         test.parseBeanObject();  
  70.         // 將javaBean轉化為json物件
  71.         test.bean2Json();  
  72.         // 全序列化
  73.         test.parseJSONAndBeanEachother();  
  74.     }  
  75. }  
控制檯輸出結果:
  1. toJsonString()方法:text={"age":105,"id":"testFastJson001","name":"maks"}  
  2. parseJsonObject()方法:json=={"age":105,"id":"testFastJson001","name":"maks"}  
  3. parseBeanObject()方法:user==testFastJson001,maks,105  
  4. bean2Json()方法:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}  
  5. parseJSONAndBeanEachother()方法:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}  
  6. parseJSONAndBeanEachother()方法:userObj==testFastJson001,maks,105  

附:javaBean類User.java

  1. package fastJson.test;  
  2. import java.io.Serializable;  
  3. publicclass User implements Serializable {  
  4.     privatestaticfinallong serialVersionUID = 1L;  
  5.     private String id;  
  6.     private String name;  
  7.     privateint age;  
  8.     public User() {  
  9.         super();  
  10.     }  
  11.     public User(String id, String name, int age) {  
  12.         super();  
  13.         this.id = id;  
  14.         this.name = name;  
  15.         this.age = age;  
  16.     }  
  17.     publicint getAge() {  
  18.         return age;  
  19.     }  
  20.     publicvoid setAge(int age) {  
  21.         this.age = age;  
  22.     }  
  23.     public String getId() {  
  24.         return id;  
  25.     }  
  26.     publicvoid setId(String id) {  
  27.         this.id = id;  
  28.     }  
  29.     public String getName() {  
  30.         return name;  
  31.     }  
  32.     publicvoid setName(String name) {  
  33.         this.name = name;  
  34.     }  
  35. }