Gson转换Java对象为JSON需创建实例并调用toJson(),默认忽略null字段和空集合、按getter推断字段名、支持@SerializedName自定义键名、setPrettyPrinting()格式化输出、泛型集合序列化通常无需TypeToken但嵌套泛型推荐使用。

用 Gson 把 Java 对象转成 JSON 很简单,核心就是创建 Gson 实例,然后调用 toJson() 方法。
基础用法:直接转换普通对象
Gson 会自动处理字段名、类型和嵌套结构。默认使用字段名作为 JSON 键,忽略 transient 和 static 字段。
- 确保目标类有公共字段,或提供 public 的 getter 方法(Gson 默认按 getter 推断)
- 不需要注解也能工作,但可加
@SerializedName自定义字段名 - 示例:
Gson gson = new Gson();
User user = new User("Alice", 28);
String json = gson.toJson(user); // → {"name":"Alice","age":28}
处理 null 值和空集合
默认情况下,Gson 会省略值为 null 的字段,也不会序列化空的 Collection 或 Map(除非显式配置)。
- 若想保留
null字段,用GsonBuilder().serializeNulls() - 空
ArrayList或HashMap默认输出[]或{},无需额外设置 - 示例:
Gson gson = new GsonBuilder().serializeNulls().create();
User user = new User(null, 28);
String json = gson.toJson(user); // → {"name":null,"age":28}
格式化输出(带缩进的 JSON)
调试时更易读,只需启用 setPrettyPrinting():
立即学习“Java免费学习笔记(深入)”;
- 不影响解析,只改变字符串排版
- 适合日志打印或开发阶段查看结构
- 示例:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(user);
// 输出类似:
// {
// "name": "Alice",
// "age": 28
// }
处理泛型和复杂类型(如 List)
直接传泛型集合会丢失类型信息,必须用 TypeToken 显式指定:
-
gson.toJson(list)可以工作,但反序列化需要TypeToken - 若只要序列化,且集合元素类型明确,通常不用
TypeToken - 但涉及嵌套泛型(如
Map<string list>></string>)时,推荐始终用TypeToken避免意外 - 示例:
List<User> users = Arrays.asList(new User("A", 25), new User("B", 30));
Gson gson = new Gson();
String json = gson.toJson(users); // → [{"name":"A","age":25},{"name":"B","age":30}]


















