Gson 简介

Gson是Google推出的用来解析json数据以及将对象转换成json数据的框架。可以很方便地实现json数据与对象的相互转换,还可以自定义需要序列化或反序列化的字段。

Gson Maven 依赖

<dependency> 
  <groupId>com.google.code.gson</groupId>  
  <artifactId>gson</artifactId>  
  <version>2.8.2</version> 
</dependency>  

使用 Gson 进行对象序列化与反序列化

public class ToJsonBeanOne {
	private int id;
	private String name;
	private int age;

  // 省略getter、setter
}

对象序列化

//创建对象
ToJsonBeanOne toJsonBeanOne = new ToJsonBeanOne(1, "小熊", 21);
//将对象转换为json数据
Gson gson = new Gson();
gson.toJson(toJsonBeanOne);

对象反序列化

Gson gson = new Gson();
//将json数据转换为对象
ToJsonBeanOne beanOne = gson.fromJson(jsonString, ToJsonBeanOne.class);

使用 Gson 进行List 序列化与反序列化

将List 数据转换成Json

Gson gson = new Gson();
List<Integer> list = Arrays.asList(1, 2, 3);
gson.toJson(list);

使用Gson 将字符串反序列化成带泛型的List

Type type = new TypeToken<List<ToJsonBeanOne>>(){}.getType();
List<ToJsonBeanOne> beanOnes = gson.fromJson(jsonString, type);

使用 Gson 进行 Map 类型的序列化与反序列化

  • 序列化
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
Map<String, ToJsonBeanOne> map = new LinkedHashMap<String, ToJsonBeanOne>();
map.put("key1", new ToJsonBeanOne(1, "小熊1", 21));
map.put("key2", new ToJsonBeanOne(2, "小熊2", 21));
map.put("key3", new ToJsonBeanOne(3, "小熊3", 21));
String jsonString = gson.toJson(map);
  • 反序列化
Type type = new TypeToken<Map<String, ToJsonBeanOne>>() {}.getType();
Map<String, ToJsonBeanOne> map2 = gson.fromJson(jsonString, type);