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以上版本。
4).支援Android。
5).開源 (Apache 2.0)
這是fastJson的網址:
其中包含了json資料處理的教程,jar下載地址,example樣例等。
下面給出fastJson處理json資料格式的程式碼樣例:
- package fastJson.test;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- public class FastJsonTest
- {
- /**
- * 序列化
- */
- public void 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物件
- */
- public void 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物件
- */
- public void 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物件
- */
- public void 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特性
- */
- public void 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
- }
- public static void 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;
- public class User implements Serializable {
- private static final long serialVersionUID = 1L;
- private String id;
- private String name;
- private int age;
- public User() {
- super();
- }
- public User(String id, String name, int age) {
- super();
- this.id = id;
- this.name = name;
- this.age = age;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
fastJson對陣列、List、Map的處理程式碼:
- package fastJson.test;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- public class FastJsonTest1
- {
- /**
- * 陣列轉json格式字串
- */
- public void array2Json(){
- String[] arr = {"bill","green","maks","jim"};
- String jsonText = JSON.toJSONString(arr, true);
- System.out.println("array2Json()方法:jsonText=="+jsonText);
- // 輸出結果:jsonText==["bill","green","maks","jim"]
- }
- /**
- * json格式字串轉陣列
- */
- public void json2Array(){
- String jsonText = "[\"bill\",\"green\",\"maks\",\"jim\"]";
- JSONArray jsonArr = JSON.parseArray(jsonText);
- System.out.println("json2Array()方法:jsonArr=="+jsonArr);
- // 輸出結果:jsonArr==["bill","green","maks","jim"]
- }
- /**
- * 陣列轉json格式字串
- */
- public void array2Json2(){
- User user1 = new User("P001","TOM",16);
- User user2 = new User("P002","JACKSON",21);
- User user3 = new User("P003","MARTIN",20);
- User[] userArr = {user1,user2,user3};
- String jsonText = JSON.toJSONString(userArr, true);
- System.out.println("array2Json2()方法:jsonText=="+jsonText);
- //輸出結果:jsonText==[{"age":16,"id":"P001","name":"TOM"},{"age":21,"id":"P002","name":"JACKSON"},{"age":20,"id":"P003","name":"MARTIN"}]
- }
- /**
- * json格式字串轉陣列
- */
- public void json2Array2(){
- String jsonText = "[{\"age\":16,\"id\":\"P001\",\"name\":\"TOM\"},{\"age\":21,\"id\":\"P002\",\"name\":\"JACKSON\"},{\"age\":20,\"id\":\"P003\",\"name\":\"MARTIN\"}]";
- JSONArray jsonArr = JSON.parseArray(jsonText);
- System.out.println("json2Array2()方法:jsonArr=="+jsonArr);
- // 輸出結果:jsonArr==[{"age":16,"id":"P001","name":"TOM"},{"age":21,"id":"P002","name":"JACKSON"},{"age":20,"id":"P003","name":"MARTIN"}]
- }
- /**
- * list集合轉json格式字串
- */
- public void list2Json(){
- List list = new ArrayList();
- User user1 = new User("L001","TOM",16);
- list.add(user1);
- User user2 = new User("L002","JACKSON",21);
- list.add(user2);
- User user3 = new User("L003","MARTIN",20);
- list.add(user3);
- String jsonText = JSON.toJSONString(list, true);
- System.out.println("list2Json()方法:jsonText=="+jsonText);
- //輸出結果:jsonText==[{"age":16,"id":"L001","name":"TOM"},{"age":21,"id":"L002","name":"JACKSON"},{"age":20,"id":"L003","name":"MARTIN"}]
- }
- /**
- * list集合轉json格式字串
- */
- public void list2Json2(){
- List list = new ArrayList();
- Address address1 = new Address("廣東省","深圳市","科苑南路","580053");
- User user1 = new User("L001","TOM",16,address1);
- list.add(user1);
- Address address2 = new Address("江西省","南昌市","陽明路","330004");
- User user2 = new User("L002","JACKSON",21,address2);
- list.add(user2);
- Address address3 = new Address("陝西省","西安市","長安南路","710114");
- User user3 = new User("L003","MARTIN",20,address3);
- list.add(user3);
- String jsonText = JSON.toJSONString(list, true);
- System.out.println("list2Json2()方法:jsonText=="+jsonText);
- //輸出結果:jsonText==[{"address":{"city":"深圳市","post":"580053","province":"廣東省","street":"科苑南路"},"age":16,"id":"L001","name":"TOM"},{"address":{"city":"南昌市","post":"330004","province":"江西省","street":"陽明路"},"age":21,"id":"L002","name":"JACKSON"},{"address":{"city":"西安市","post":"710114","province":"陝西省","street":"長安南路"},"age":20,"id":"L003","name":"MARTIN"}]
- }
- /**
- * map轉json格式字串
- */
- public void map2Json(){
- Map map = new HashMap();
- Address address1 = new Address("廣東省","深圳市","科苑南路","580053");
- map.put("address1", address1);
- Address address2 = new Address("江西省","南昌市","陽明路","330004");
- map.put("address2", address2);
- Address address3 = new Address("陝西省","西安市","長安南路","710114");
- map.put("address3", address3);
- String jsonText = JSON.toJSONString(map, true);
- System.out.println("map2Json()方法:jsonText=="+jsonText);
- //輸出結果:jsonText=={"address1":{"city":"深圳市","post":"580053","province":"廣東省","street":"科苑南路"},"address2":{"city":"南昌市","post":"330004","province":"江西省","street":"陽明路"},"address3":{"city":"西安市","post":"710114","province":"陝西省","street":"長安南路"}}
- }
- public static void main(String[] args)
- {
- FastJsonTest1 test = new FastJsonTest1();
- //陣列轉json格式字串
- test.array2Json();
- //json格式字串轉陣列
- test.json2Array();
- //陣列轉json格式字串
- test.array2Json2();
- //json格式字串轉陣列
- test.json2Array2();
- //list集合轉json格式字串
- test.list2Json();
- //list集合轉json格式字串
- test.list2Json2();
- //map轉json格式字串
- test.map2Json();
- }
- }
控制檯輸出結果:
- array2Json()方法:jsonText==["bill","green","maks","jim"]
- json2Array()方法:jsonArr==["bill","green","maks","jim"]
- array2Json2()方法:jsonText==[{
- "age":16,
- "id":"P001",
- "name":"TOM"
- },{
- "age":21,
- "id":"P002",
- "name":"JACKSON"
- },{
- "age":20,
- "id":"P003",
- "name":"MARTIN"
- }]
- json2Array2()方法:jsonArr==[{"age":16,"id":"P001","name":"TOM"},{"age":21,"id":"P002","name":"JACKSON"},{"age":20,"id":"P003","name":"MARTIN"}]
- list2Json()方法:jsonText==[
- {
- "age":16,
- "id":"L001",
- "name":"TOM"
- },
- {
- "age":21,
- "id":"L002",
- "name":"JACKSON"
- },
- {
- "age":20,
- "id":"L003",
- "name":"MARTIN"
- }
- ]
- list2Json2()方法:jsonText==[
- {
- "address":{
- "city":"深圳市",
- "post":"580053",
- "province":"廣東省",
- "street":"科苑南路"
- },
- "age":16,
- "id":"L001",
- "name":"TOM"
- },
- {
- "address":{
- "city":"南昌市",
- "post":"330004",
- "province":"江西省",
- "street":"陽明路"
- },
- "age":21,
- "id":"L002",
- "name":"JACKSON"
- },
- {
- "address":{
- "city":"西安市",
- "post":"710114",
- "province":"陝西省",
- "street":"長安南路"
- },
- "age":20,
- "id":"L003",
- "name":"MARTIN"
- }
- ]
- map2Json()方法:jsonText=={"address1":{
- "city":"深圳市",
- "post":"580053",
- "province":"廣東省",
- "street":"科苑南路"
- },"address2":{
- "city":"南昌市",
- "post":"330004",
- "province":"江西省",
- "street":"陽明路"
- },"address3":{
- "city":"西安市",
- "post":"710114",
- "province":"陝西省",
- "street":"長安南路"
- }}
附:javabean類 User.java
- package fastJson.test;
- import java.io.Serializable;
- public class User implements Serializable {
- private static final long serialVersionUID = 1L;
- private String id;
- private String name;
- private int age;
- private Address address;
- public User() {
- super();
- }
- public User(String id, String name, int age) {
- super();
- this.id = id;
- this.name = name;
- this.age = age;
- }
- public User(String id, String name, int age, Address address)
- {
- super();
- this.id = id;
- this.name = name;
- this.age = age;
- this.address = address;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Address getAddress()
- {
- return address;
- }
- public void setAddress(Address address)
- {
- this.address = address;
- }
- }
Address.java
- package fastJson.test;
- import java.io.Serializable;
- public class Address implements Serializable
- {
- private static final long serialVersionUID = 1L;
- private String province;
- private String city;
- private String street;
- private String post;
- public Address()
- {
- super();
- }
- public Address(String province, String city, String street, String post)
- {
- super();
- this.province = province;
- this.city = city;
- this.street = street;
- this.post = post;
- }
- public String getCity()
- {
- return city;
- }
- public void setCity(String city)
- {
- this.city = city;
- }
- public String getPost()
- {
- return post;
- }
- public void setPost(String post)
- {
- this.post = post;
- }
- public String getProvince()
- {
- return province;
- }
- public void setProvince(String province)
- {
- this.province = province;
- }
- public String getStreet()
- {
- return street;
- }
- public void setStreet(String street)
- {
- this.street = street;
- }
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-1821151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在.NET使用JSON作為資料交換格式JSON
- 把JSON資料格式轉換為Python的類物件JSONPython物件
- Python將xml格式轉換為json格式PythonXMLJSON
- 資料集轉換JSONJSON
- Java中使用Fastjson將JSON檔案轉物件JavaASTJSON物件
- Hive資料格式轉換Hive
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- Python字典格式與JSON格式的相互轉換PythonJSON
- JSON資料交換格式有幾種?JSON
- java後臺介面相容jsonp格式資料JavaJSON
- fastjson轉換json時,碰到的那些首字母大小寫轉換的坑!ASTJSON
- layui tree資料格式轉換UI
- 用兩種方法把JSON資料格式轉換為Python的類物件JSONPython物件
- JavaScript將物件轉換為JSON格式字串JavaScript物件JSON字串
- eval()將JSON格式字串轉換為物件JSON字串物件
- json字串轉義格式化後再轉換處理demo StringEscapeUtils.unescapeJavaJSON字串Java
- 資料匯入與預處理實驗二---json格式檔案轉換JSON
- mxnet資料格式轉換為tensorflow,pytorch資料PyTorch
- fastjson:物件轉化成json出現$refASTJSON物件
- fastjson字串轉JSON的$ref問題ASTJSON字串
- 後臺對Json資料加密、解密JSON加密解密
- Oracle資料庫日期格式轉換操作Oracle資料庫
- python json格式轉url引數&分割, url引數轉json格式PythonJSON
- 【Java】資料型別轉換Java資料型別
- Python JSON 使用指南:解析和轉換資料PythonJSON
- 為啥我的字典資料轉換不成 json?JSON
- Excel表格轉Json格式ExcelJSON
- 處理json格式的資料JSON
- JSON資料格式及其在WEB開發中的應用JSONWeb
- fastjson: json物件,json物件陣列,javabean物件,json字串之間的相互轉化ASTJSON物件陣列JavaBean字串
- 2、java資料型別轉換Java資料型別
- Java常用時間格式轉換工具類Java
- 「GIS基礎」JSON資料格式在GIS領域的運用JSON
- Antd:Tree樹形控制元件資料解析(JSON轉換)控制元件JSON
- JSON學習--com.alibaba.fastjson.JSONJSONAST
- 陣列轉json後的資料型別問題陣列JSON資料型別
- 影像格式轉換
- 數倉的兩種輕量級資料交換格式:json與jsonbJSON
- scala和java資料型別轉換Java資料型別