fastJson在java後臺轉換json格式資料
阿新 • • 發佈:2019-02-05
什麼事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
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資料格式的程式碼樣例:
-
package fastJson.test;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- publicclass FastJsonTest
- {
- /**
- * 序列化
- */
- publicvoid toJsonString()
- {
- User user = new User("testFastJson001", "maks", 105);
-
String text = JSON.toJSONString(user);
- System.out.println("toJsonString()方法:text=" + text);
- // 輸出結果:text={"age":105,"id":"testFastJson001","name":"maks"}
- }
- /**
- * 反序列化為json物件
- */
- publicvoid parseJsonObject()
- {
- String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";
- JSONObject json = JSON.parseObject(text);
- System.out.println("parseJsonObject()方法:json==" + json);
- // 輸出結果:json=={"age":105,"id":"testFastJson001","name":"maks"}
- }
- /**
- * 反序列化為javaBean物件
- */
- publicvoid parseBeanObject()
- {
- String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";
- User user = (User) JSON.parseObject(text, User.class);
- System.out.println("parseBeanObject()方法:user==" + user.getId() + "," + user.getName() + "," + user.getAge());
- // 輸出結果:user==testFastJson001,maks,105
- }
- /**
- * 將javaBean轉化為json物件
- */
- publicvoid bean2Json()
- {
- User user = new User("testFastJson001", "maks", 105);
- JSONObject jsonObj = (JSONObject) JSON.toJSON(user);
- System.out.println("bean2Json()方法:jsonObj==" + jsonObj);
- // 輸出結果:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}
- }
- /**
- * 全序列化 直接把java bean序列化為json文字之後,能夠按照原來的型別反序列化回來。支援全序列化,需要開啟SerializerFeature.WriteClassName特性
- */
- publicvoid parseJSONAndBeanEachother()
- {
- User user = new User("testFastJson001", "maks", 105);
- SerializerFeature[] featureArr = { SerializerFeature.WriteClassName };
- String text = JSON.toJSONString(user, featureArr);
- System.out.println("parseJSONAndBeanEachother()方法:text==" + text);
- // 輸出結果:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}
- User userObj = (User) JSON.parse(text);
- System.out.println("parseJSONAndBeanEachother()方法:userObj==" + userObj.getId() + "," + userObj.getName() + "," + userObj.getAge());
- // 輸出結果:userObj==testFastJson001,maks,105
- }
- publicstaticvoid main(String[] args)
- {
- FastJsonTest test = new FastJsonTest();
- // 序列化
- test.toJsonString();
- // 反序列化為json物件
- test.parseJsonObject();
- // 反序列化為javaBean物件
- test.parseBeanObject();
- // 將javaBean轉化為json物件
- test.bean2Json();
- // 全序列化
- test.parseJSONAndBeanEachother();
- }
- }
- toJsonString()方法:text={"age":105,"id":"testFastJson001","name":"maks"}
- parseJsonObject()方法:json=={"age":105,"id":"testFastJson001","name":"maks"}
- parseBeanObject()方法:user==testFastJson001,maks,105
- bean2Json()方法:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}
- parseJSONAndBeanEachother()方法:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}
- parseJSONAndBeanEachother()方法:userObj==testFastJson001,maks,105
附:javaBean類User.java
- package fastJson.test;
- import java.io.Serializable;
- publicclass User implements Serializable {
- privatestaticfinallong serialVersionUID = 1L;
- private String id;
- private String name;
- privateint age;
- public User() {
- super();
- }
- public User(String id, String name, int age) {
- super();
- this.id = id;
- this.name = name;
- this.age = age;
- }
- publicint getAge() {
- return age;
- }
- publicvoid setAge(int age) {
- this.age = age;
- }
- public String getId() {
- return id;
- }
- publicvoid setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- publicvoid setName(String name) {
- this.name = name;
- }
- }