gson使用指南
1. 依赖包
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>2. gson的基本用法
Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法
2.1 基本数据类型的解析与生成
Gson gson = new Gson();
Integer fromJson = gson.fromJson("100", Integer.class);// 100
Boolean fromJson2 = gson.fromJson("true", Boolean.class);// true
String fromJson3 = gson.fromJson("100", String.class);// 100
log.info("{},{},{}", fromJson, fromJson2, fromJson3);
String jsonNumber = gson.toJson(100); // 100
String jsonBoolean = gson.toJson(false); // false
String jsonString = gson.toJson("String"); //"String"
log.info("{},{},{}",jsonNumber, jsonBoolean, jsonString);2.2 POJO类的生成与解析
生成json
解析json
3. 属性重命名 @SerializedName 注解的使用
@SerializedName 注解的使用3.1 为POJO字段提供备选属性名
@SerializedName注解提供了两个属性,上面用到了其中一个,别外还有一个属性alternate,接收一个String数组。
注:alternate需要2.4版本
当上面的三个属性(email_address、email、emailAddress)都中出现任意一个时均可以得到正确的结果。
注:当多种情况同时出时,以最后一个出现的值为准。
4. Gson中使用泛型
JSON中的集合有两种:数组、list
如果是数组的话,没问题,因为数组本身就是一种类型,如果是list的话会有问题,因为设计到了泛型
解析json使用new TypeToken<Response<List<User>>>(){}.getType()
5. 使用GsonBuilder导出null值、格式化输出、日期时间
一般情况下Gson类提供的 API已经能满足大部分的使用场景,但我们需要更多更特殊、更强大的功能时,这时候就引入一个新的类 GsonBuilder。
GsonBuilder从名上也能知道是用于构建Gson实例的一个类,要想改变Gson默认的设置必须使用该类配置Gson。
5.1 默认null字段是不显示的
age字段我们设置了null, 生成的json是没有age字段的
如果我们这样生成一个gson
5.2 格式化日期
6. 字段过滤的几种方法
6.1 基于@Expose注解
6.2 基于版本
Gson在对基于版本的字段导出提供了两个注解 @Since 和 @Until,和GsonBuilder.setVersion(Double)配合使用。@Since 和 @Until都接收一个Double值。
6.3 基于访问修饰符
7. 禁用特殊字符转移
Last updated
Was this helpful?