在说GSON前,先说一下这个maven和Junit.
maven这个工具确实挺好用的,以前我都是用maven写个pom.xml文件然后下载到文件夹里,再buildPath,但这次用idea的maven工程,直接吧需要的jar包放在pom文件下然后ctrl+S就自动给我导入jar包完毕了,不错。
既然用的maven,junit用的就是最新版,不过这4.11这个版本增加了新的jar包,需要新的jar包(hamcrest-all)下面是我的pom.xml
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-all -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
首先贴一下Gson的简单使用。Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法。这两个方法为我们提供了很方便的序列化和反序列化。但下面的只是针对于基础数据类型的操作。
Gson gson = new Gson();
@Test
public void test() {
String hello = gson.toJson("Hello");
String num = gson.toJson(123);
Student stu = new Student("zhangsan", 22);
String cla = gson.toJson(stu);
System.out.println(hello);
System.out.println(num);
System.out.println(cla);
Student newStu = gson.fromJson(cla, Student.class);
System.out.println(newStu.toString());
}
下面是List的操作
@Test
public void testArray() {
Room room = new Room();
room.addStudent();
System.out.println(room.getSize());
String roomString = gson.toJson(room);
System.out.println(roomString);
Room room2 = gson.fromJson(roomString, Room.class);
System.out.println(room2.toString());
}
最后就是我想说的,Gson有个特别的地方,就是他能吧不知道的数据转换成List<Map>形式,这样用起来就很方便了下面看示例。
@Test
public void testList() {
List<Room> roomList = new ArrayList<Room>();
for (int i = 0; i < 100; i++) {
Room room = new Room();
room.addStudent();
roomList.add(room);
}
String roomListString = gson.toJson(roomList);
System.out.println(roomListString + "\n");
List<Room> roomList2 = gson.fromJson(roomListString, ArrayList.class);
roomListString = gson.toJson(roomList2);
System.out.println(roomListString + "\n");
List<Map<String, Object>> list = (List<Map<String, Object>>) gson.fromJson(roomListString, ArrayList.class);
System.out.println(list.size());
System.out.println(list.get(0).get("stuList"));
for (String key : list.get(1).keySet()) {
System.out.print(key);
}
}