什么是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对象