Java 对象转 JSON 字符串
在 Java 中,将对象转换为 JSON 字符串有多种方法,以下是几种常用的实现方式:

使用 Jackson 库
Jackson 是最受欢迎的 Java JSON 处理库之一。
添加依赖 (Maven)
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>
使用示例
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonExample {
public static void main(String[] args) throws Exception {
// 创建对象
User user = new User("张三", 25, "zhangsan@example.com");
// 创建 ObjectMapper 实例
ObjectMapper objectMapper = new ObjectMapper();
// 将对象转换为 JSON 字符串
String jsonString = objectMapper.writeValueAsString(user);
System.out.println(jsonString);
// 输出: {"name":"张三","age":25,"email":"zhangsan@example.com"}
}
}
class User {
private String name;
private int age;
private String email;
// 构造方法、getter 和 setter
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; }
}
使用 Gson 库
Google 的 Gson 是另一个流行的 JSON 处理库。
添加依赖 (Maven)
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
使用示例
import com.google.gson.Gson;
public class GsonExample {
public static void main(String[] args) {
// 创建对象
User user = new User("李四", 30, "lisi@example.com");
// 创建 Gson 实例
Gson gson = new Gson();
// 将对象转换为 JSON 字符串
String jsonString = gson.toJson(user);
System.out.println(jsonString);
// 输出: {"name":"李四","age":30,"email":"lisi@example.com"}
}
}
使用 org.json 库
这是一个轻量级的 JSON 处理库。
添加依赖 (Maven)
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20250320</version>
</dependency>
使用示例
import org.json.JSONObject;
public class OrgJsonExample {
public static void main(String[] args) {
// 创建对象
User user = new User("王五", 28, "wangwu@example.com");
// 将对象转换为 JSON 对象
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", user.getName());
jsonObject.put("age", user.getAge());
jsonObject.put("email", user.getEmail());
// 将 JSON 对象转换为字符串
String jsonString = jsonObject.toString();
System.out.println(jsonString);
// 输出: {"name":"王五","age":28,"email":"wangwu@example.com"}
}
}
使用 Java 内置库 (Java 9+)
从 Java 9 开始,Java 标准库中包含了 JSON 处理功能。

使用示例
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
public class JavaJsonExample {
public static void main(String[] args) {
// 创建对象
User user = new User("赵六", 35, "zhaoliu@example.com");
// 创建 JSON 对象构建器
JsonObjectBuilder builder = Json.createObjectBuilder();
builder.add("name", user.getName());
builder.add("age", user.getAge());
builder.add("email", user.getEmail());
// 构建 JSON 对象并转换为字符串
JsonObject jsonObject = builder.build();
String jsonString = jsonObject.toString();
System.out.println(jsonString);
// 输出: {"name":"赵六","age":35,"email":"zhaoliu@example.com"}
}
}
注意事项
- 字段可见性:大多数 JSON 库要求对象有公共的 getter 方法或公共字段
- 循环引用:对象中存在循环引用时会导致无限递归,需要特殊处理
- 日期处理:日期类型需要自定义序列化格式
- null 值处理:可以根据需要配置是否包含 null 值
- 性能考虑:Jackson 通常被认为是最快的 JSON 库
方法中,Jackson 和 Gson 是最常用的,功能也更全面,推荐在项目中使用。
