杰瑞科技汇

Java JSON如何高效转为String?

核心概念

将一个 Java 对象(Object)或 JSON 数据结构(如 Map, List)转换成一个 JSON 格式的字符串,这个过程就是序列化

Java JSON如何高效转为String?-图1
(图片来源网络,侵删)

使用 Jackson (推荐)

Jackson 是目前 Java 生态中最流行、功能最强大的 JSON 处理库,Spring Boot 等主流框架都默认使用它。

添加依赖

确保你的项目中包含了 Jackson 的核心库,如果你使用 Maven,在 pom.xml 中添加:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version> <!-- 建议使用最新版本 -->
</dependency>

使用 ObjectMapper

ObjectMapper 是 Jackson 的核心类,负责所有的 JSON 序列化和反序列化工作。

示例 1:将 Java 对象转换为 JSON 字符串

Java JSON如何高效转为String?-图2
(图片来源网络,侵删)
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
// 1. 定义一个简单的 Java 类 (POJO)
class User {
    private String name;
    private int age;
    private String email;
    // Jackson 需要一个无参构造函数
    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; }
    // (可选) 重写 toString 方法方便打印
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", email='" + email + '\'' +
                '}';
    }
}
public class JacksonExample {
    public static void main(String[] args) {
        // 2. 创建 ObjectMapper 实例
        ObjectMapper objectMapper = new ObjectMapper();
        // 3. 创建 Java 对象
        User user = new User("张三", 30, "zhangsan@example.com");
        try {
            // 4. 调用 writeValueAsString 方法进行转换
            String jsonString = objectMapper.writeValueAsString(user);
            // 5. 输出结果
            System.out.println("转换后的 JSON 字符串:");
            System.out.println(jsonString);
            // 输出: {"name":"张三","age":30,"email":"zhangsan@example.com"}
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }
}

示例 2:将 MapList 转换为 JSON 字符串

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
public class JacksonMapExample {
    public static void main(String[] args) {
        ObjectMapper objectMapper = new ObjectMapper();
        // 创建一个 Map
        Map<String, Object> dataMap = new HashMap<>();
        dataMap.put("name", "李四");
        dataMap.put("age", 25);
        dataMap.put("isStudent", true);
        dataMap.put("courses", new String[]{"数学", "英语", "物理"});
        try {
            String jsonString = objectMapper.writeValueAsString(dataMap);
            System.out.println("Map 转换后的 JSON 字符串:");
            System.out.println(jsonString);
            // 输出: {"name":"李四","age":25,"isStudent":true,"courses":["数学","英语","物理"]}
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }
}

Jackson 常用配置:

你可以在创建 ObjectMapper 后进行一些配置,以控制输出格式。

ObjectMapper objectMapper = new ObjectMapper();
// 美化输出 (格式化,增加缩进和换行)
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
// 忽略 null 值的字段
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
// 处理日期格式
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

使用 Gson

Google 的 Gson 是另一个非常流行的 JSON 库,以其简洁易用而闻名。

Java JSON如何高效转为String?-图3
(图片来源网络,侵删)

添加依赖 (Maven)

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version> <!-- 建议使用最新版本 -->
</dependency>

使用 Gson

Gson 的使用非常直接,通常创建一个 Gson 实例然后调用 toJson() 方法。

示例 1:将 Java 对象转换为 JSON 字符串

import com.google.gson.Gson;
// 使用上面定义的 User 类
public class GsonExample {
    public static void main(String[] args) {
        // 1. 创建 Gson 实例
        Gson gson = new Gson();
        // 2. 创建 Java 对象
        User user = new User("王五", 28, "wangwu@example.com");
        // 3. 调用 toJson 方法进行转换
        String jsonString = gson.toJson(user);
        // 4. 输出结果
        System.out.println("转换后的 JSON 字符串:");
        System.out.println(jsonString);
        // 输出: {"name":"王五","age":28,"email":"wangwu@example.com"}
    }
}

Gson 常用配置:

Gson 提供了 GsonBuilder 来进行更精细的配置。

Gson gson = new GsonBuilder()
        .setPrettyPrinting() // 美化输出
        .serializeNulls()    // 序列化 null 值
        .create();

使用 org.json (轻量级)

这是一个非常轻量级的库,API 简单直接,但功能相对前两者较少。

添加依赖 (Maven)

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20251013</version> <!-- 建议使用最新版本 -->
</dependency>

使用 JSONObjectJSONArray

这个库需要你手动构建 JSON 结构。

示例:将数据组合成 JSON 字符串

import org.json.JSONObject;
public class OrgJsonExample {
    public static void main(String[] args) {
        // 1. 创建一个 JSONObject 对象,代表 JSON 对象
        JSONObject jsonObject = new JSONObject();
        // 2. 使用 put 方法添加键值对
        jsonObject.put("name", "赵六");
        jsonObject.put("age", 35);
        jsonObject.put("city", "北京");
        // 3. 可以嵌套其他 JSONObject 或 JSONArray
        JSONObject address = new JSONObject();
        address.put("street", "长安街1号");
        address.put("zipcode", 100001);
        jsonObject.put("address", address);
        // 4. 直接调用 toString() 方法
        String jsonString = jsonObject.toString();
        // 5. 输出结果
        System.out.println("转换后的 JSON 字符串:");
        System.out.println(jsonString);
        // 输出: {"name":"赵六","age":35,"city":"北京","address":{"street":"长安街1号","zipcode":100001}}
    }
}

总结与对比

特性 Jackson Gson org.json
流行度 非常高 (Spring Boot 默认) 非常高 较低
易用性 中等 (功能强大,配置稍复杂) 非常简单 简单 (但需要手动构建)
性能 非常高 一般
功能 最全面 (流式 API, 树模型, 数据绑定, 注解支持等) 功能齐全 (数据绑定, 流式 API) 基础功能 (构建和解析 JSON)
数据绑定 优秀 (自动映射 POJO) 优秀 (自动映射 POJO) 不支持 (需手动 put)
推荐场景 大型项目、企业级应用、Web 服务 通用、中小型项目、追求简洁的场景 轻量级需求、快速原型、不需要复杂对象映射

最终建议

  • 如果你正在使用 Spring Boot直接使用 Jackson,因为它已经包含在
分享:
扫描分享到社交APP
上一篇
下一篇