Java 转 JSON 需要什么包?全面解析常用 JSON 处理库
在 Java 开发中,将对象转换为 JSON 格式(序列化)或从 JSON 格式还原为对象(反序列化)是常见的操作,尤其在前后端数据交互、API 开发等场景中高频使用,要实现 Java 转 JSON,离不开成熟的 JSON 处理库的支持,本文将详细介绍 Java 转 JSON 常用的依赖包,包括它们的特性、使用场景及如何引入,帮助你快速选择合适的工具。
主流 JSON 处理库对比
Java 生态中,主流的 JSON 处理库主要有以下几种,它们各有优劣,适用于不同的需求场景:
| 库名称 | 核心特点 | 适用场景 | 是否需额外依赖 |
|---|---|---|---|
| Jackson | 高性能、功能丰富、支持注解、社区活跃,是 Spring Boot 默认 JSON 库 | 企业级应用、RESTful API、复杂数据结构 | 需引入核心依赖(如 jackson-databind) |
| Gson | Google 出品,API 简单直观,支持复杂对象序列化/反序列化,无需注解即可使用 | 中小型项目、Android 开发、JSON 字符串处理 | 需引入 gson 依赖 |
| Fastjson | 阿里巴巴开源,性能极高,支持 JSON 与 Java 对象的快速转换,兼容性好 | 对性能要求极高的场景、国内企业级应用 | 需引入 fastjson 依赖 |
| org.json | 轻量级,API 简单,仅支持基本的 JSON 操作(无注解、无复杂对象映射) | 简单 JSON 解析/生成、学习入门 | 需引入 org.json 依赖 |
各库详细使用指南
Jackson:企业级首选(Spring Boot 默认)
Jackson 是目前 Java 生态中最流行的 JSON 处理库,Spring Boot、Spring Cloud 等主流框架均默认使用 Jackson 进行 JSON 序列化/反序列化,它提供了丰富的功能,如注解支持、自定义序列化器、数据类型转换等,适合处理复杂的业务场景。
核心依赖
Jackson 主要通过三个模块协同工作,通常只需引入 databind 即可(它会自动依赖 core 和 annotations):
<!-- Maven 依赖 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.2</version> <!-- 建议使用最新稳定版 -->
</dependency>
基本使用示例
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonExample {
public static void main(String[] args) {
// 1. 创建 ObjectMapper 实例(线程安全,可复用)
ObjectMapper objectMapper = new ObjectMapper();
// 2. Java 对象转 JSON(序列化)
User user = new User("张三", 25, "zhangsan@example.com");
try {
String jsonStr = objectMapper.writeValueAsString(user);
System.out.println("Java 转 JSON: " + jsonStr);
// 输出: {"name":"张三","age":25,"email":"zhangsan@example.com"}
// 3. JSON 转 Java 对象(反序列化)
User deserializedUser = objectMapper.readValue(jsonStr, User.class);
System.out.println("JSON 转 Java: " + deserializedUser.getName());
// 输出: 张三
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
class User {
private String name;
private int age;
private String email;
// 无参构造器(反序列化时需要)
public User() {}
// 全参构造器
public User(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
// Getter/Setter(序列化/反序列化时需要)
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
}
常用注解
@JsonProperty:修改 JSON 字段名(如@JsonProperty("username")对应 JSON 中的username)。@JsonIgnore:忽略某个字段,不参与序列化/反序列化。@JsonFormat:格式化日期/时间(如@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss"))。
Gson:Google 出品,简单易用
Gson 是 Google 开源的 JSON 处理库,以其简洁的 API 和强大的兼容性著称,它无需注解即可处理复杂对象,同时也支持通过注解自定义序列化行为,适合中小型项目或需要快速集成的场景。
核心依赖
<!-- Maven 依赖 -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version> <!-- 建议使用最新稳定版 -->
</dependency>
基本使用示例
import com.google.gson.Gson;
public class GsonExample {
public static void main(String[] args) {
// 1. 创建 Gson 实例(线程安全,可复用)
Gson gson = new Gson();
// 2. Java 对象转 JSON(序列化)
User user = new User("李四", 30, "lisi@example.com");
String jsonStr = gson.toJson(user);
System.out.println("Java 转 JSON: " + jsonStr);
// 输出: {"name":"李四","age":30,"email":"lisi@example.com"}
// 3. JSON 转 Java 对象(反序列化)
User deserializedUser = gson.fromJson(jsonStr, User.class);
System.out.println("JSON 转 Java: " + deserializedUser.getName());
// 输出: 李四
}
}
// User 类同上(无需额外注解)
特点
- 默认支持
List、Map、数组等集合类型的序列化/反序列化。 - 通过
GsonBuilder可自定义配置(如日期格式、是否忽略空值等)。
Fastjson:高性能,国内流行
Fastjson 是阿里巴巴开源的 JSON 处理库,以“快”为核心优势,在解析性能上表现突出,同时支持 JSON 与 Java Bean、集合、Map 等类型的直接转换,在国内企业级应用中广泛使用。
核心依赖
<!-- Maven 依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version> <!-- 注意:1.2.x 版本有已知安全漏洞,建议升级至 2.x 版本 -->
</dependency>
基本使用示例(Fastjson 1.x)
import com.alibaba.fastjson.JSON;
public class FastjsonExample {
public static void main(String[] args) {
// 1. Java 对象转 JSON(序列化)
User user = new User("王五", 28, "wangwu@example.com");
String jsonStr = JSON.toJSONString(user);
System.out.println("Java 转 JSON: " + jsonStr);
// 输出: {"name":"王五","age":28,"email":"wangwu@example.com"}
// 2. JSON 转 Java 对象(反序列化)
User deserializedUser = JSON.parseObject(jsonStr, User.class);
System.out.println("JSON 转 Java: " + deserializedUser.getName());
// 输出: 王五
}
}
注意事项
- Fastjson 1.x 版本曾曝出多个高危安全漏洞(如远程代码执行),建议升级至 Fastjson 2.x(兼容 1.x API,修复安全问题)。
- Fastjson 2.x 依赖坐标为
com.alibaba.fastjson2:fastjson2,使用时需注意版本差异。
org.json:轻量级,适合简单场景
org.json 是一个轻量级的 JSON 处理库,API 简单直观,仅支持基本的 JSON 解析和生成功能,不支持注解或复杂对象映射,适合处理简单 JSON 字符串或学习 JSON 基础。
核心依赖
<!-- Maven 依赖 -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20231013</version> <!-- 建议使用最新稳定版 -->
</dependency>



还没有评论,来说两句吧...