杰瑞科技汇

json数组转字符串 java

推荐方法 1:使用 Jackson (最流行)

Jackson 是目前 Java 生态中最流行、性能最高的 JSON 处理库。

json数组转字符串 java-图1
(图片来源网络,侵删)

添加依赖

你需要在你的项目中添加 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 字符串

json数组转字符串 java-图2
(图片来源网络,侵删)

这是最常见的场景,你需要先将你的 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 著名,两者都是优秀的选择。

分享:
扫描分享到社交APP
上一篇
下一篇