json的转换插件是通过java的一些工具,直接将java对象或集合转换成json字符串。
常用的json转换工具有如下几种:
1)jsonlib
2)Gson:google
3)fastjson:阿里巴巴
------GSON操作简单,只需要一个jar包----------
User.java
1 packagebean;2
3 public classUser {4
5 privateString id;6 privateString name;7 private intage;8 privateString address;9 publicString getId() {10 returnid;11 }12 public voidsetId(String id) {13 this.id =id;14 }15 publicString getName() {16 returnname;17 }18 public voidsetName(String name) {19 this.name =name;20 }21 public User(String id, String name, intage, String address) {22 super();23 this.id =id;24 this.name =name;25 this.age =age;26 this.address =address;27 }28 @Override29 publicString toString() {30 return "User [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";31 }32
33
34
35 }
1.测试Java对象转JSON(测试结果在后面注释)
操作简单,无论转单个对象还是集合,都是gson.toJson(obj);
1 packageTestJson;2
3 importjava.util.ArrayList;4 importjava.util.HashMap;5 importjava.util.List;6 importjava.util.Map;7
8 importjavax.xml.bind.UnmarshallerHandler;9
10 importorg.junit.Test;11
12 importcom.google.gson.Gson;13
14 importbean.User;15
16 public classBean2JSON {17
18 //测试单个对象转JSON
19 @Test20 public voidtest1(){21 User user = new User("1", "QIAOZHI",25,"山西太原");22 Gson gson = newGson();23 String json =gson.toJson(user);24 System.out.println(json); //{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"}
25 }26
27
28
29 //测试list转JSON
30 @Test31 public voidtest2(){32 List list = new ArrayList();33 list.add(new User("1", "QIAOZHI",25,"山西太原"));34 list.add(new User("2", "QIAOZHI",25,"山西太原"));35 list.add(new User("3", "QIAOZHI",25,"山西太原"));36 Gson gson = newGson();37 String json =gson.toJson(list);38 System.out.println(json);39 //[{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"},{"id":"2","name":"QIAOZHI","age":25,"address":"山西太原"},{"id":"3","name":"QIAOZHI","age":25,"address":"山西太原"}]
40 }41
42 //测试map对象转JSON
43 @Test44 public voidtest3(){45 Map map = new HashMap();46 map.put("1", new User("1", "QIAOZHI",25,"山西太原"));47 map.put("2", new User("2", "QIAOZHI",25,"山西太原"));48 map.put("3", new User("3", "QIAOZHI",25,"山西太原"));49 Gson gson = newGson();50 String json =gson.toJson(map);51 System.out.println(json);52 //{"3":{"id":"3","name":"QIAOZHI","age":25,"address":"山西太原"},"2":{"id":"2","name":"QIAOZHI","age":25,"address":"山西太原"},"1":{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"}}
53 }54
55 //测试list对象转JSON
56 @Test57 public voidtest4(){58 List> list = new ArrayList<>();59 Map map1 = new HashMap();60 Map map2 = new HashMap();61 map1.put("map11", new User("1", "QIAOZHI",25,"山西太原"));62 map1.put("map12", new User("2", "QIAOZHI",25,"山西太原"));63 map2.put("21", new User("11", "QIAOZHI",25,"山西太原"));64 map2.put("22", new User("21", "QIAOZHI",25,"山西太原"));65 list.add(map1);66 list.add(map2);67 Gson gson = newGson();68 String json =gson.toJson(list);69 System.out.println(json);70 //[{"map12":{"id":"2","name":"QIAOZHI","age":25,"address":"山西太原"},"map11":{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"}},{"21":{"id":"11","name":"QIAOZHI","age":25,"address":"山西太原"},"22":{"id":"21","name":"QIAOZHI","age":25,"address":"山西太原"}}]
71 }72
73 }
2.测试Json转Java对象与集合(测试结果在后面注释)
packageTestJson_GSON;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.junit.Test;importcom.google.gson.Gson;importcom.google.gson.reflect.TypeToken;public classJSON2Bean {//测试json转单个对象
@Testpublic voidtest1(){
String json= "{'id':'1','name':'QIAOZHI','age':25,'address':'山西太原'}";
Gson gson= newGson();
User user= gson.fromJson(json, User.class);
System.out.println(user);//User [id=1, name=QIAOZHI, age=25, address=山西太原]
}//测试JSON转list
@SuppressWarnings("unchecked")
@Testpublic voidtest2(){
String json= "[{'id':'1','name':'QIAOZHI','age':25,'address':'山西太原'},{'id':'2','name':'QIAOZHI','age':25,'address':'山西太原'},{'id':'3','name':'QIAOZHI','age':25,'address':'山西太原'}]";
List list = new ArrayList();
Gson gson= newGson();
list= (List) gson.fromJson(json, new TypeToken>(){}.getType());
System.out.println(list);for(User user:list){
System.out.println(user);
}//[{id=1, name=QIAOZHI, age=25.0, address=山西太原}, {id=2, name=QIAOZHI, age=25.0, address=山西太原}, {id=3, name=QIAOZHI, age=25.0, address=山西太原}]
System.out.println(list.get(1));//{id=2, name=QIAOZHI, age=25.0, address=山西太原}
}//测试JSON转Map
@Testpublic voidtest3(){
String json= "{'3':{'id':'3','name':'QIAOZHI','age':25,'address':'山西太原'},'2':{'id':'2','name':'QIAOZHI','age':25,'address':'山西太原'},'1':{'id':'1','name':'QIAOZHI','age':25,'address':'山西太原'}}";
Map map = new HashMap();
Gson gson= newGson();
map= (Map) gson.fromJson(json, new TypeToken>(){}.getType());
System.out.println(map);//{3={id=3, name=QIAOZHI, age=25.0, address=山西太原}, 2={id=2, name=QIAOZHI, age=25.0, address=山西太原}, 1={id=1, name=QIAOZHI, age=25.0, address=山西太原}}
User user = map.get("1");
System.out.println(user);//{id=1, name=QIAOZHI, age=25.0, address=山西太原}
}//测试JSON转list对象
@SuppressWarnings("unchecked")
@Testpublic voidtest4(){
String json= "[{'map12':{'id':'2','name':'QIAOZHI','age':25,'address':'山西太原'},'map11':{'id':'1','name':'QIAOZHI','age':25,'address':'山西太原'}},{'21':{'id':'11','name':'QIAOZHI','age':25,'address':'山西太原'},'22':{'id':'21','name':'QIAOZHI','age':25,'address':'山西太原'}}]";
List> list = new ArrayList<>();
Gson gson= newGson();
list= gson.fromJson(json, new TypeToken>>(){}.getType());
System.out.println(list);//[{map12={id=2, name=QIAOZHI, age=25.0, address=山西太原}, map11={id=1, name=QIAOZHI, age=25.0, address=山西太原}}, {21={id=11, name=QIAOZHI, age=25.0, address=山西太原}, 22={id=21, name=QIAOZHI, age=25.0, address=山西太原}}]
System.out.println(list.get(1));//{21={id=11, name=QIAOZHI, age=25.0, address=山西太原}, 22={id=21, name=QIAOZHI, age=25.0, address=山西太原}}
}
}
注意:
json转普通的Javabean只需要两个简单的参数,第一个是json字符串,第二个是需要转换对象的类型。
User user = gson.fromJson(json, User.class);
json转集合与map类型需要使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。也就是通知GSON将json转为那种集合
list = (List) gson.fromJson(json, new TypeToken>(){}.getType());
map = (Map) gson.fromJson(json, new TypeToken>(){}.getType());
list = gson.fromJson(json, new TypeToken>>(){}.getType());