什么是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. 這是fastJson的網址:http://code.alibabatech.com/wiki/display/FastJSON/Overview其中包含了json數據處理的教程,jar下載地址,example樣例等
JSONObject 與JSONArray
🔣JSONObject
json對象,就是一個鍵對應一個值,使用的是大括號{ },如:{key:value}
🔣JSONArray
json數組,使用中括號[ ],只不過數組里面的項也是json鍵值對格式的
Json對象中是添加的鍵值對,JSONArray中添加的是Json對象
例子:
1 public class JsonTest { 2 public static void main(String[] args) { 3 4 // Json對象中是添加的鍵值對,JSONArray中添加的是Json對象 5 6 JSONObject jsonObject = new JSONObject(); 7 JSONObject jsonObject1 = new JSONObject(); 8 JSONArray jsonArray = new JSONArray(); 9 jsonObject1.put("001","tom"); 10 11 // JSONObject 對象中添加鍵值對 12 jsonObject.put("key","value"); 13 // 將JSONObject對象添加到json數組中 14 jsonArray.add(jsonObject); 15 jsonArray.add(jsonObject1); 16 17 System.out.println(jsonArray.toString()); 18 19 // 輸出結果: [{"key":"value"},{"001":"tom"}] 20 21 } 22 }
先來個官方例子
1 package com.wanggs.com.wanggs.json.fastjson; 2 3 import java.util.List; 4 5 /** 6 * Created by wanggs on 2017/7/27. 7 */ 8 public class Group { 9 private int id; 10 private String name; 11 List<User> users; 12 13 public int getId() { 14 return id; 15 } 16 17 public void setId(int id) { 18 this.id = id; 19 } 20 21 public String getName() { 22 return name; 23 } 24 25 public void setName(String name) { 26 this.name = name; 27 } 28 29 public List<User> getUsers() { 30 return users; 31 } 32 33 public void setUsers(List<User> users) { 34 this.users = users; 35 } 36 } 37 38 class User{ 39 private int id; 40 private String name; 41 42 public int getId() { 43 return id; 44 } 45 46 public void setId(int id) { 47 this.id = id; 48 } 49 50 public String getName() { 51 return name; 52 } 53 54 public void setName(String name) { 55 this.name = name; 56 } 57 }
1 import com.alibaba.fastjson.JSON; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 public class FastJsonTest { 7 public static void main(String[] args) { 8 Group group = new Group(); 9 group.setId(0); 10 group.setName("admin"); 11 12 User user = new User(); 13 user.setId(001); 14 user.setName("guest"); 15 User user1 = new User(); 16 user1.setId(002); 17 user1.setName("root"); 18 List<User> users = new ArrayList<User>(); 19 users.add(user); 20 users.add(user1); 21 22 group.setUsers(users); 23 24 String json = JSON.toJSONString(group); 25 System.out.println(json); 26 27 // 輸出: {"id":0,"name":"admin","users":[{"id":1,"name":"guest"},{"id":2,"name":"root"}]} 28 } 29 }
下面給出fastJson處理json數據格式的代碼樣例:
1 import com.alibaba.fastjson.JSON; 2 import com.alibaba.fastjson.JSONObject; 3 import com.alibaba.fastjson.serializer.SerializerFeature; 4 import com.wanggs.com.wanggs.json.fastjson.People; 5 import org.junit.Test; 6 7 import static org.junit.Assert.*; 8 9 public class FastJsonTestTest { 10 11 /** 12 * 序列化 13 */ 14 @Test 15 public void toJsonString() { 16 People people = new People("001","tom",12); 17 String text = JSON.toJSONString(people); 18 System.out.println(text); 19 20 // 輸出結果: {"age":12,"id":"001","name":"tom"} 21 } 22 23 /** 24 * 反序列為Json對象 25 */ 26 @Test 27 public void parseJsonObject(){ 28 String text = "{\"age\":12,\"id\":\"001\",\"name\":\"tom\"}"; 29 People people = (People) JSON.parseObject(text,People.class); 30 System.out.println("parseBeanObject()方法:people==" + people.getId() + "," + people.getName() + "," + people.getAge()); 31 32 // 輸出結果為: parseBeanObject()方法:people==001,tom,12 33 } 34 35 /** 36 * 將javaBean轉化為json對象 37 */ 38 @Test 39 public void bean2Json(){ 40 People people = new People("002","jack",23); 41 JSONObject jsonObject = (JSONObject) JSON.toJSON(people); 42 System.out.println("bean2Json()方法:jsonObject==" + jsonObject); 43 44 // 輸出結果: bean2Json()方法:jsonObject=={"name":"jack","id":"002","age":23} 45 } 46 47 /** 48 * 全序列化 直接把java bean序列化為json文本之后,能夠按照原來的類型反序列化回來。支持全序列化,需要打開SerializerFeature.WriteClassName特性 49 */ 50 @Test 51 public void parseJSONAndBeanEachother(){ 52 People people = new People("002","jack",23); 53 SerializerFeature[] featureArr = { SerializerFeature.WriteClassName }; 54 String text = JSON.toJSONString(people, featureArr); 55 56 System.out.println("parseJSONAndBeanEachother()方法:text==" + text); 57 // 輸出結果:parseJSONAndBeanEachother()方法:text=={"@type":"com.wanggs.com.wanggs.json.fastjson.People","age":23,"id":"002","name":"jack"} 58 People people1 = (People) JSON.parse(text); 59 System.out.println("parseJSONAndBeanEachother()方法:People==" + people1.getId() + "," + people1.getName() + "," + people1.getAge()); 60 // 輸出結果:userObj==testFastJson001,maks,105 61 } 62 }
附:javaBean類People.java
1 public class People { 2 private String id; 3 private String name; 4 private int age; 5 6 public People() { 7 } 8 9 public People(String id, String name, int age) { 10 this.id = id; 11 this.name = name; 12 this.age = age; 13 } 14 15 public String getId() { 16 return id; 17 } 18 19 public void setId(String id) { 20 this.id = id; 21 } 22 23 public String getName() { 24 return name; 25 } 26 27 public void setName(String name) { 28 this.name = name; 29 } 30 31 public int getAge() { 32 return age; 33 } 34 35 public void setAge(int age) { 36 this.age = age; 37 } 38 }
再深入Json
1 import com.alibaba.fastjson.JSON; 2 import com.alibaba.fastjson.JSONArray; 3 import com.wanggs.com.wanggs.json.fastjson.Address; 4 import com.wanggs.com.wanggs.json.fastjson.People; 5 import org.junit.Test; 6 7 import java.util.*; 8 9 import static org.junit.Assert.*; 10 11 /** 12 * Created by wanggs on 2017/7/27. 13 */ 14 public class FastJsonTest1Test { 15 /** 16 * 數組轉json字符串 17 */ 18 @Test 19 public void array2Json() { 20 String[] arr = {"bill", "green", "maks", "jim"}; 21 String jsonText = JSON.toJSONString(arr); 22 System.out.println("array2Json()方法:jsonText==" + jsonText); 23 // 輸出結果:jsonText==["bill","green","maks","jim"] 24 } 25 26 /** 27 * json格式字符串轉數組 28 */ 29 @Test 30 public void json2Array() { 31 String jsonText = "[\"bill\",\"green\",\"maks\",\"jim\"]"; 32 JSONArray jsonArray = JSON.parseArray(jsonText); 33 System.out.println("json2Array()方法:jsonArray==" + jsonArray); 34 // 輸出結果:jsonArray==["bill","green","maks","jim"] 35 } 36 37 /** 38 * 數組轉json格式字符串 39 */ 40 @Test 41 public void array2Json2() { 42 People people = new People("001", "tom", 12); 43 People people1 = new People("002", "jack", 23); 44 People people2 = new People("003", "mair", 22); 45 46 People[] peoples = new People[]{people, people1, people2}; 47 48 String jsonText = JSON.toJSONString(peoples); 49 System.out.println("array2Json2()方法:jsonText==" + jsonText); 50 51 //輸出結果:array2Json2()方法:jsonText==[{"age":12,"id":"001","name":"tom"},{"age":23,"id":"002","name":"jack"},{"age":22,"id":"003","name":"mair"}] 52 53 } 54 55 /** 56 * json格式字符串轉數組 57 */ 58 @Test 59 public void json2Array2() { 60 String jsonText = "[{\"age\":12,\"id\":\"001\",\"name\":\"tom\"},{\"age\":23,\"id\":\"002\",\"name\":\"jack\"},{\"age\":22,\"id\":\"003\",\"name\":\"mair\"}]"; 61 JSONArray jsonArr = JSON.parseArray(jsonText); 62 System.out.println("json2Array2()方法:jsonArr==" + jsonArr); 63 // 輸出結果:json2Array2()方法:jsonArr==[{"name":"tom","id":"001","age":12},{"name":"jack","id":"002","age":23},{"name":"mair","id":"003","age":22}] 64 65 } 66 67 /** 68 * list集合轉json格式字符串 69 */ 70 @Test 71 public void list2Json() { 72 List<People> list = new ArrayList<People>(); 73 list.add(new People("001", "tom", 12)); 74 list.add(new People("002", "jack", 23)); 75 list.add(new People("003", "mair", 22)); 76 77 String jsonText = JSON.toJSONString(list); 78 System.out.println("list2Json()方法:jsonText==" + jsonText); 79 80 // 輸出的結果為: [{"age":12,"id":"001","name":"tom"},{"age":23,"id":"002","name":"jack"},{"age":22,"id":"003","name":"mair"}] 81 } 82 83 84 /** 85 * map轉json格式字符串 86 */ 87 @Test 88 public void map2Json() { 89 Map map = new HashMap(); 90 Address address1 = new Address("廣東省","深圳市","科苑南路","580053"); 91 map.put("address1", address1); 92 Address address2 = new Address("江西省","南昌市","陽明路","330004"); 93 map.put("address2", address2); 94 Address address3 = new Address("陝西省","西安市","長安南路","710114"); 95 map.put("address3", address3); 96 String jsonText = JSON.toJSONString(map, true); 97 System.out.println("map2Json()方法:jsonText=="+jsonText); 98 //輸出結果:jsonText=={"address1":{"city":"深圳市","post":"580053","province":"廣東省","street":"科苑南路"},"address2":{"city":"南昌市","post":"330004","province":"江西省","street":"陽明路"},"address3":{"city":"西安市","post":"710114","province":"陝西省","street":"長安南路"}} 99 } 100 101 /** 102 * json轉map 103 */ 104 @Test 105 public void json2Map(){ 106 String text = "{\"age\":12,\"id\":\"001\",\"name\":\"tom\"}"; 107 Map<String,Object> map = JSON.parseObject(text); 108 System.out.println("json2Map()方法:map=="+map); 109 //輸出結果:{"name":"tom","id":"001","age":12} 110 Set<String> set = map.keySet(); 111 for(String key : set){ 112 System.out.println(key+"--->"+map.get(key)); 113 } 114 } 115 }
1 import com.alibaba.fastjson.JSON; 2 3 4 5 6 public class CustomText { 7 8 /** 9 * touser : OPENID 10 * msgtype : text 11 * text : {"content":"Hello World"} 12 */ 13 //{"msgtype":"text","text":{"content":"Hello World"},"touser":"OPENID"} 14 private String touser; 15 private String msgtype; 16 private TextBean text; 17 18 public static class TextBean { 19 /** 20 * content : Hello World 21 */ 22 23 private String content; 24 25 public String getContent() { 26 return content; 27 } 28 29 public void setContent(String content) { 30 this.content = content; 31 } 32 } 33 public String getTouser() { 34 return touser; 35 } 36 37 public void setTouser(String touser) { 38 this.touser = touser; 39 } 40 41 public String getMsgtype() { 42 return msgtype; 43 } 44 45 public void setMsgtype(String msgtype) { 46 this.msgtype = msgtype; 47 } 48 49 public TextBean getText() { 50 return text; 51 } 52 53 public void setText(TextBean text) { 54 this.text = text; 55 } 56 } 57 58 class Test{ 59 public static void main(String[] args) { 60 CustomText customText = new CustomText(); 61 customText.setTouser("OPENID"); 62 customText.setMsgtype("text"); 63 CustomText.TextBean textBean = new CustomText.TextBean(); 64 textBean.setContent("Hello World"); 65 customText.setText(textBean); 66 67 String json = JSON.toJSONString(customText); 68 System.out.println(json); 69 //{"msgtype":"text","text":{"content":"Hello World"},"touser":"OPENID"} 70 } 71 /** 72 * { 73 "touser":"OPENID", 74 "msgtype":"text", 75 "text": 76 { 77 "content":"Hello World" 78 } 79 } 80 */ 81 }
歸納六種方式json轉map
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.util.Map; import java.util.Set; /** * Created by wanggs on 2017/7/27. */ public class FastJsonTest1 { public static void main(String[] args) { String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}"; //第一種方式 Map maps = (Map)JSON.parse(str); System.out.println("這個是用JSON類來解析JSON字符串!!!"); for (Object map : maps.entrySet()){ System.out.println(((Map.Entry)map).getKey()+" " + ((Map.Entry)map).getValue()); } //第二種方式 Map mapTypes = JSON.parseObject(str); System.out.println("這個是用JSON類的parseObject來解析JSON字符串!!!"); for (Object obj : mapTypes.keySet()){ System.out.println("key為:"+obj+"值為:"+mapTypes.get(obj)); } //第三種方式 Map mapType = JSON.parseObject(str,Map.class); System.out.println("這個是用JSON類,指定解析類型,來解析JSON字符串!!!"); for (Object obj : mapType.keySet()){ System.out.println("key為:"+obj+"值為:"+mapType.get(obj)); } //第四種方式 /** * JSONObject是Map接口的一個實現類 */ Map json = (Map) JSONObject.parse(str); System.out.println("這個是用JSONObject類的parse方法來解析JSON字符串!!!"); for (Object map : json.entrySet()){ System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue()); } //第五種方式 /** * JSONObject是Map接口的一個實現類 */ JSONObject jsonObject = JSONObject.parseObject(str); System.out.println("這個是用JSONObject的parseObject方法來解析JSON字符串!!!"); for (Object map : json.entrySet()){ System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue()); } //第六種方式 /** * JSONObject是Map接口的一個實現類 */ Map mapObj = JSONObject.parseObject(str,Map.class); System.out.println("這個是用JSONObject的parseObject方法並執行返回類型來解析JSON字符串!!!"); for (Object map: json.entrySet()){ System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue()); } String strArr = "{{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}," + "{\"00\":\"zhangsan\",\"11\":\"lisi\",\"22\":\"wangwu\",\"33\":\"maliu\"}}"; // JSONArray.parse() System.out.println(json); } }
1 import com.alibaba.fastjson.JSON; 2 import com.alibaba.fastjson.JSONArray; 3 import com.alibaba.fastjson.JSONObject; 4 5 import java.util.*; 6 7 8 public class FastJsonTest { 9 public static void main(String[] args) { 10 11 String json = "[{\"id\":1,\"type\":\"cycle\",\"attribute\":{\"center\":\"(10.4, 123.345)\", \"radius\":67.4}},{\"id\":2,\"type\":\"polygon\",\"attribute\":[{\"vertex\":\"(10.4, 133.345)\"}, {\"vertex\":\"(10.4, 143.345)\"}]}]"; 12 13 JSONArray array = JSON.parseArray(json); 14 15 System.out.println(array.getJSONObject(0).getJSONObject("attribute").get("center")); 16 17 System.out.println(array.getJSONObject(1).getJSONArray("attribute").getJSONObject(1).get("vertex")); 18 19 // 輸出結果為: (10.4, 123.345) (10.4, 143.345) 20 } 21 } 22
方法總結
4.JSONObject、JSONArray,Map轉String JSONObject——String: System.out.println(myJsonObject);//可直接輸出JSONObject的內容 myJsonObject.toString();
JSONArray——String: System.out.println(myJsonArray);//可直接輸出myJsonArray的內容 myJsonArray.toString();
Map——String: System.out.println(map);//可直接輸出map的內容 map.toString();
5.JSONObject轉JSONArray
JSONObject myJson = JSONObject.fromObject(jsonString);
Map m = myJson;
7.JSONArray轉JSONObject
for(int i=0 ; i < myJsonArray.length() ;i++)
{
//獲取每一個JsonObject對象
JSONObject myjObject = myJsonArray.getJSONObject(i);
}
8.JSONArray轉Map
9.Map轉JSONObject
JSONObject json = JSONObject.fromObject( map );
10.Map轉JSONArray
JSONArray.fromObject(map);
11.List轉JSONArray
JSONArray jsonArray2 = JSONArray.fromObject( list );
1 1.String轉JSONObject 2 3 (1)json-lib(即net.sf.json.JSONObject) 4 5 String jsonMessage = "{\"語文\":\"88\",\"數學\":\"78\",\"計算機\":\"99\"}"; 6 7 JSONObject myJson = JSONObject.fromObject(jsonMessage); 8 9 (2).用阿里巴巴的fastjson的jar包 10 11 String str = "{\"baid\":null,\"32d3:\":\"null\",433:\"0x32\",032:\"ju9fw\"}"; 12 com.alibaba.fastjson.JSONObject jm = com.alibaba.fastjson.JSON.parseObject(str); 13 14 2.String轉JSONArray 15 16 String jsonMessage = "[{'num':'成績', '外語':88, '歷史':65, '地理':99, 'object':{'aaa':'1111','bbb':'2222','cccc':'3333'}}," + 17 "{'num':'興趣', '外語':28, '歷史':45, '地理':19, 'object':{'aaa':'11a11','bbb':'2222','cccc':'3333'}}," + 18 "{'num':'愛好', '外語':48, '歷史':62, '地理':39, 'object':{'aaa':'11c11','bbb':'2222','cccc':'3333'}}]"; 19 JSONArray myJsonArray = JSONArray.fromObject(jsonMessage); 20 System.out.println(myJsonArray); 21 22 3.String轉Map 23 24 (1)json-lib(即net.sf.json.JSONObject) 25 26 String jsonMessage = "{\"語文\":\"88\",\"數學\":\"78\",\"計算機\":\"99\"}"; 27 28 JSONObject myJson = JSONObject.fromObject(jsonMessage); 29 30 Map m = myJson; 31 32 (2)用阿里巴巴的fastjson的jar包 33 34 String str = "{\"baid\":null,\"32d3:\":\"null\",433:\"0x32\",032:\"ju9fw\"}"; 35 Map mapTypes = com.alibaba.fastjson.JSON.parseObject(str); 36 37 (3) (需要引入jackjson的core、databind、annotations三個jar包 ) 38 39 String json = "{\"PayPal key2\":\"PayPal value2\",\"PayPal key1\":\"PayPal value1\",\"PayPal key3\":\"PayPalvalue3\"}"; 40 41 ObjectMapper mapper = new ObjectMapper(); 42 Map<String,Object> m = mapper.readValue(json, Map.class); 43 44 (4)(特殊格式的String) 45 46 String a ="{se=2016, format=xml, at=en co=3}"; 47 48 a = a.substring(1, a.length()-1); 49 Map docType = new HashMap(); 50 Java.util.StringTokenizer items; 51 for(StringTokenizer entrys = new StringTokenizer(a, ", ");entrys.hasMoreTokens(); 52 docType.put(items.nextToken(), items.hasMoreTokens() ? ((Object) (items.nextToken())) : null)){ 53 items = new StringTokenizer(entrys.nextToken(), "="); 54 } 55 56 (5)Gson 57 Map map = new Gson().fromJson(jsonStr,Map.class); 58 59 60 61 4.JSONObject、JSONArray,Map轉String 62 63 JSONObject——String: 64 65 System.out.println(myJsonObject);//可直接輸出JSONObject的內容 66 67 myJsonObject.toString(); 68 69 阿里巴巴fastjson: 70 71 String str = JSON.toJSONString(obj,SerializerFeature.BrowserCompatible); 72 73 JSONArray——String: 74 75 System.out.println(myJsonArray);//可直接輸出myJsonArray的內容 76 77 myJsonArray.toString(); 78 79 Map——String: 80 81 System.out.println(map);//可直接輸出map的內容 82 83 map.toString(); 84 85 86 87 5.JSONObject轉JSONArray 88 89 90 91 6.JSONObject轉Map 92 93 JSONObject myJson = JSONObject.fromObject(jsonString); 94 95 Map m = myJson; 96 97 98 99 7.JSONArray轉JSONObject 100 101 for(int i=0 ; i < myJsonArray.length() ;i++){ 102 //獲取每一個JsonObject對象 103 JSONObject myjObject = myJsonArray.getJSONObject(i); 104 105 } 106 107 8.JSONArray轉Map 108 109 先jsonArray先循環取出jsonObject,在轉成Map 110 111 112 113 9.Map轉JSONObject 114 115 (1)json-lib(即net.sf.json.JSONObject) 116 JSONObject json = JSONObject.fromObject( map ); 117 或 118 String jsonString = JSON.toJSONString(map,SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty); 119 120 (2)alibaba的fastjson 121 JSONObject json = JSON.parseObject(str); 122 123 124 125 Map轉json格式的String 126 127 JSON.toJSONString(map, SerializerFeature.BrowserCompatible).replace("\\\\u", "\\u"); 128 129 //需要引入alibaba的fastjson包 130 131 132 133 10.Map轉JSONArray 134 135 JSONArray.fromObject(map); 136 137 11.List轉JSONArray 138 JSONArray jsonArray2 = JSONArray.fromObject( list ); 139 140 fastjson:List轉JSONArray 141 142 (1)List<Object> list1 = new ArrayList<Object>(); 143 list1.add("false"); 144 list1.add(true); 145 list1.add(null); 146 list1.add(0x13e); 147 list1.add(0123); 148 JSONArray array1 = JSONArray.parseArray(JSON.toJSONString(list1)); 149 150 (2)JSONArray jsonArray = new JSONArray(list1) ; 151 152 12.JSONArray轉List 153 154 List<Map<String,Object>> mapListJson = (List)jsonArray; 155 156 或 157 158 public static List<Map<String, Object>> jsonArrayToList(JSONArray ja){ 159 return JSONArray.toJavaObject(ja, List.class); 160 } 161 162 jsonArray轉實體類list: 163 164 Student[] ss =(Student[])net.sf.json.JSONArray.toArray(jsonArray,Student.class); 165 166 167 168 fastjson:JSONArray轉List 169 170 JSONArray arr = new JSONArray(); 171 arr.add(0,"13"); 172 arr.add(1,"jo"); 173 arr.add(2,"kpo"); 174 List<String> list = JSONObject.parseArray(array.toJSONString(), String.class); 175 176 177 178 JSONArray array = new JSONArray(); 179 180 List<T> list = JSONObject.parseArray(array.toJSONString(), T.class); 181 182 13.String轉數組 183 184 String string = "a,b,c"; 185 String [] stringArr= string.split(","); //注意分隔符是需要轉譯滴... 186 如果是"abc"這種字符串,就直接 187 String string = "abc" ; 188 char [] stringArr = string.toCharArray(); //注意返回值是char數組 189 如果要返回byte數組就直接使用getBytes方法就ok了~~ 190 String string = "abc" ; 191 byte [] stringArr = string.getBytes(); 192 193 String轉List 194 195 String str = ""; 196 197 List<T> list = JSONObject.parseArray(str, T.class); 198 199 或net.sf.json 200 201 String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市西城區\"},{\"name\":\"JSON2\",\"age\":\"24\",\"address\":\"北京市西城區\"}]"; 202 //轉化為list 203 List<Student> list2=(List<Student>)net.sf.json.JSONArray.toList(net.sf.json.JSONArray.fromObject(arrayStr), Student.class); 204 205 206 207 數組轉String 208 209 char[] data={a,b,c}; 210 String s=new String(data); 211 212 213 214 14.java實體類的List轉String 215 216 JSON與String關系比較近,而JSON的子類JSONArray又和List關系比較近,故把JSONArray做中介過渡: 217 218 import com.alibaba.fastjson.JSONArray; 219 220 public String list2str(List<?> list){ 221 JSONArray jsonArray = (JSONArray) JSONArray.toJSON(list); //List轉JSONArray 222 System.out.println(jsonArray.toString()); 223 return jsonArray.toJSONString(); //JSONArray比較容易轉String 224 } 225 226 15.Array、List、Set之間轉換: 227 228 String[] arr = new String[]{"Tom", "Bob", "Jane"}; 229 //Array轉List 230 List<String> arr2list = Arrays.asList(arr); 231 //Array轉Set 232 Set<String> arr2set = new HashSet<String>(Arrays.asList(arr)); 233 //List轉Array 234 Object[] list2arr = arr2list.toArray(); 235 //List轉Set 236 Set<String> list2set = new HashSet<>(arr2list); 237 //Set轉Array 238 Object[] set2arr = list2set.toArray(); 239 //Set轉List 240 List<String> set2list = new ArrayList<>(arr2set); 241 List<String> list = new ArrayList<String>(new HashSet<String>());// 242 243 16.java對象轉JsonObject 244 245 Student stu=new Student(); 246 stu.setName("JSON"); 247 stu.setAge("23"); 248 stu.setAddress("北京市西城區"); 249 250 net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(stu); 251 252 或alibaba的fastjson: 253 254 JSONObject json = (JSONObject) JSONObject.toJSON(stu); 255 256 17.java對象轉jsonArray 257 258 Student stu=new Student(); 259 stu.setName("JSON"); 260 stu.setAge("23"); 261 stu.setAddress("北京市西城區"); 262 263 net.sf.json.JSONArray array = net.sf.json.JSONArray.fromObject(stu); 264 265 但alibaba的fastjson報錯: 266 267 //JSONArray array = (JSONArray) JSONArray.toJSON(stu);//報錯 268 269 18.JsonObject轉java對象 270 271 Student stu=(Student)JSONObject.toBean(jsonObject, Student.class); 272 273 19.jsonArray轉java對象 274 275 jsonArray先循環取出jsonObject,再轉成java對象