推荐方法 1:使用 Jackson (最流行)
Jackson 是目前 Java 生态中最流行、性能最高的 JSON 处理库。

添加依赖
你需要在你的项目中添加 Jackson 的核心库依赖,如果你使用 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' // 使用最新版本
编写代码
Jackson 提供了 ObjectMapper 类,这是其 API 的核心,你可以用它来读取和写入 JSON。
场景 A:将一个 Java 对象列表 (List) 转换为 JSON 字符串

这是最常见的场景,你需要先将你的 Java 对象(User)的列表转换为一个 JSON 数组。
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.List;
// 1. 定义一个简单的 Java 类 (POJO)
class User {
private String name;
private int age;
private String email;
// 构造函数、getters 和 setters 是必须的
public User() {}
public User(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
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; }
@Override
public String toString() {
return "User{" + "name='" + name + '\'' + ", age=" + age + ", email='" + email + '\'' + '}';
}
}
public class JacksonArrayToString {
public static void main(String[] args) {
// 2. 创建一个 Java 对象列表
List<User> userList = Arrays.asList(
new User("Alice", 30, "alice@example.com"),
new User("Bob", 25, "bob@example.com"),
new User("Charlie", 35, "charlie@example.com")
);
// 3. 创建 ObjectMapper 实例
ObjectMapper objectMapper = new ObjectMapper();
try {
// 4. 调用 writeValueAsString() 方法进行转换
// 这个方法会自动将 List 转换为 JSON 数组格式
String jsonString = objectMapper.writeValueAsString(userList);
// 5. 输出结果
System.out.println("转换后的 JSON 字符串:");
System.out.println(jsonString);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}
输出结果:
转换后的 JSON 字符串:
[{"name":"Alice","age":30,"email":"alice@example.com"},{"name":"Bob","age":25,"email":"bob@example.com"},{"name":"Charlie","age":35,"email":"charlie@example.com"}]
推荐方法 2:使用 Gson
Google 的 Gson 是另一个非常流行的 JSON 处理库,使用起来同样非常简单。
添加依赖
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' // 使用最新版本
编写代码
Gson 的核心是 Gson 类。
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.List;
// 继续使用上面定义的 User 类
public class GsonArrayToString {
public static void main(String[] args) {
// 1. 创建一个 Java 对象列表
List<User> userList = Arrays.asList(
new User("David", 40, "david@example.com"),
new User("Eve", 28, "eve@example.com")
);
// 2. 创建 Gson 实例
Gson gson = new Gson();
// 3. 直接使用 gson.toJson() 方法进行转换
// Gson 非常智能,能直接处理 List 和数组
String jsonString = gson.toJson(userList);
// 4. 输出结果
System.out.println("转换后的 JSON 字符串:");
System.out.println(jsonString);
}
}
输出结果:
转换后的 JSON 字符串:
[{"name":"David","age":40,"email":"david@example.com"},{"name":"Eve","age":28,"email":"eve@example.com"}]
备选方法 3:手动拼接字符串 (不推荐)
如果你因为某些原因不能使用第三方库,可以手动拼接字符串。这种方法非常脆弱,容易出错,且难以维护,仅适用于非常简单的、固定的数据结构。
import java.util.List;
// 继续使用上面定义的 User 类
public class ManualJsonArray {
public static void main(String[] args) {
List<User> userList = Arrays.asList(
new User("Frank", 45, "frank@example.com"),
new User("Grace", 32, "grace@example.com")
);
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < userList.size(); i++) {
User user = userList.get(i);
sb.append("{")
.append("\"name\":\"").append(user.getName()).append("\",")
.append("\"age\":").append(user.getAge()).append(",")
.append("\"email\":\"").append(user.getEmail()).append("\"")
.append("}");
// 如果不是最后一个元素,添加逗号
if (i < userList.size() - 1) {
sb.append(",");
}
}
sb.append("]");
String jsonString = sb.toString();
System.out.println("手动拼接的 JSON 字符串:");
System.out.println(jsonString);
}
}
输出结果:
手动拼接的 JSON 字符串:
[{"name":"Frank","age":45,"email":"frank@example.com"},{"name":"Grace","age":32,"email":"grace@example.com"}]
缺点:
- 繁琐且易错:需要手动处理引号、逗号、大括号等。
- 安全性问题:如果数据中包含引号等特殊字符,会导致 JSON 格式错误或安全漏洞(如 JSON 注入)。
- 性能差:频繁的字符串拼接效率低下。
总结与对比
| 特性 | Jackson | Gson | 手动拼接 |
|---|---|---|---|
| 易用性 | 非常简单,writeValueAsString() 一行搞定 |
非常简单,toJson() 一行搞定 |
繁琐,容易出错 |
| 性能 | 非常高,业界标杆 | 非常高,性能与 Jackson 相当 | 差 |
| 功能 | 功能最全面,支持流式 API、树模型等 | 功能强大,支持注解、泛型等 | 几乎没有 |
| 依赖 | 需要添加 jackson-databind |
需要添加 gson |
无需依赖 |
| 推荐度 | ⭐⭐⭐⭐⭐ (首选) | ⭐⭐⭐⭐⭐ (备选) | ⭐ (仅用于学习或极特殊场景) |
对于任何生产项目,强烈推荐使用 Jackson 或 Gson,它们是行业标准,能让你从繁琐且易错的字符串处理中解放出来,专注于业务逻辑,Jackson 在性能和功能上略胜一筹,而 Gson 则以其简洁的 API 著名,两者都是优秀的选择。
