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 注解的使用

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?