准备工作:添加依赖
你需要在你的项目中添加相应库的依赖。

Jackson (推荐)
Jackson 是目前 Java 生态中最流行、性能最好的 JSON 处理库。
Maven (pom.xml):
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version> <!-- 建议使用最新版本 -->
</dependency>
Gradle (build.gradle):
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2' // 建议使用最新版本
Google Gson
Gson 是 Google 提供的库,非常易于使用,API 简洁直观。

Maven (pom.xml):
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version> <!-- 建议使用最新版本 -->
</dependency>
Gradle (build.gradle):
implementation 'com.google.code.gson:gson:2.10.1' // 建议使用最新版本
Alibaba Fastjson
Fastjson 是阿里巴巴开源的 JSON 库,在国内非常流行,性能也很好,但需要注意其历史版本存在一些安全漏洞,强烈建议使用最新版本。
Maven (pom.xml):

<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.40</version> <!-- 务必使用 2.x 版本 -->
</dependency>
Gradle (build.gradle):
implementation 'com.alibaba.fastjson2:fastjson2:2.0.40' // 务必使用 2.x 版本
使用 Jackson
Jackson 提供了 ObjectMapper 类,这是其核心 API。
步骤:
- 创建
ObjectMapper实例。 - 调用
ObjectMapper的writeValueAsString()方法,传入你的 Java 对象。 - 该方法会返回一个 JSON 格式的字符串。
示例代码:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
public class JacksonExample {
public static void main(String[] args) {
// 1. 创建 ObjectMapper 实例
ObjectMapper objectMapper = new ObjectMapper();
// 2. 创建一个 Java 对象(这里用 Map 作为示例)
Map<String, Object> person = new HashMap<>();
person.put("name", "张三");
person.put("age", 30);
person.put("isStudent", false);
person.put("courses", new String[]{"数学", "语文"});
try {
// 3. 将对象转换为 JSON 字符串
String jsonString = objectMapper.writeValueAsString(person);
// 4. 输出结果
System.out.println("Jackson 转换结果:");
System.out.println(jsonString);
// 你也可以将结果格式化输出(美化)
String prettyJsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);
System.out.println("\n美化后的 JSON:");
System.out.println(prettyJsonString);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
输出结果:
Jackson 转换结果:
{"name":"张三","age":30,"isStudent":false,"courses":["数学","语文"]}
美化后的 JSON:
{
"name" : "张三",
"age" : 30,
"isStudent" : false,
"courses" : [ "数学", "语文" ]
}
使用 Google Gson
Gson 的 API 更加面向对象,通常需要先创建 Gson 实例。
步骤:
- 创建
Gson实例(通常是单例,可以复用)。 - 调用
Gson实例的toJson()方法,传入你的 Java 对象。 - 该方法会返回 JSON 字符串。
示例代码:
import com.google.gson.Gson;
import java.util.HashMap;
import java.util.Map;
public class GsonExample {
public static void main(String[] args) {
// 1. 创建 Gson 实例
Gson gson = new Gson();
// 2. 创建一个 Java 对象
Map<String, Object> person = new HashMap<>();
person.put("name", "李四");
person.put("age", 25);
person.put("isStudent", true);
person.put("courses", new String[]{"英语", "物理"});
// 3. 将对象转换为 JSON 字符串
String jsonString = gson.toJson(person);
// 4. 输出结果
System.out.println("Gson 转换结果:");
System.out.println(jsonString);
}
}
输出结果:
Gson 转换结果:
{"name":"李四","age":25,"isStudent":true,"courses":["英语","物理"]}
注意:Gson 本身不提供内置的“美化输出”功能,但可以通过其他方式实现,例如使用
GsonBuilder配置或借助其他工具。
使用 Alibaba Fastjson
Fastjson 的 API 非常简洁,通常是静态方法调用。
步骤:
- 直接调用
JSON.toJSONString()静态方法,传入你的 Java 对象。 - 该方法会返回 JSON 字符串。
示例代码:
import com.alibaba.fastjson2.JSON;
import java.util.HashMap;
import java.util.Map;
public class FastjsonExample {
public static void main(String[] args) {
// 1. 创建一个 Java 对象
Map<String, Object> person = new HashMap<>();
person.put("name", "王五");
person.put("age", 28);
person.put("isStudent", false);
person.put("courses", new String[]{"化学", "生物"});
// 2. 将对象转换为 JSON 字符串
String jsonString = JSON.toJSONString(person);
// 3. 输出结果
System.out.println("Fastjson 转换结果:");
System.out.println(jsonString);
// Fastjson 2.x 也支持美化输出
String prettyJsonString = JSON.toJSONString(person, JSONWriter.Feature.PrettyFormat);
System.out.println("\n美化后的 JSON:");
System.out.println(prettyJsonString);
}
}
输出结果:
Fastjson 转换结果:
{"name":"王五","age":28,"isStudent":false,"courses":["化学","生物"]}
美化后的 JSON:
{
"name": "王五",
"age": 28,
"isStudent": false,
"courses": [
"化学",
"生物"
]
}
总结与对比
| 特性 | Jackson | Google Gson | Alibaba Fastjson |
|---|---|---|---|
| 易用性 | 中等,需要创建 ObjectMapper 对象 |
简单,API 直观 | 非常简单,静态方法调用 |
| 性能 | 非常高,性能优秀 | 性能良好 | 性能优秀 |
| 功能丰富度 | 非常丰富,支持复杂的数据绑定、流式 API 等 | 功能齐全,但相对 Jackson 稍少 | 功能强大,对 JSON Schema 等支持好 |
| 生态集成 | Spring Boot 默认集成,生态最好 | 独立性好,被广泛使用 | 国内流行,与阿里云等生态集成好 |
| 美化输出 | writerWithDefaultPrettyPrinter() |
无内置,需自定义 | JSON.toJSONString(..., Feature.PrettyFormat) |
| 安全性 | 历史版本有漏洞,但新版本已修复 | 相对稳定 | x 版本有严重安全漏洞,必须使用 2.x |
如何选择?
- 新项目,尤其是 Spring Boot 项目:首选 Jackson,它是事实上的标准,与 Spring 生态无缝集成,性能和功能都无可挑剔。
- 追求简单、快速实现:Gson 是一个非常好的选择,API 设计清晰,学习成本低。
- 国内项目,或已有技术栈:可以使用 Fastjson 2.x,如果你已经在使用阿里云或阿里巴巴的技术体系,Fastjson 是一个自然的选择。切记升级到 2.x 版本!
对于绝大多数情况,Jackson 是最稳妥、最推荐的选择。
