杰瑞科技汇

Java如何将JSON对象转为字符串?

准备工作:添加依赖

你需要在你的项目中添加相应库的依赖。

Java如何将JSON对象转为字符串?-图1
(图片来源网络,侵删)

Jackson (推荐)

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

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' // 建议使用最新版本

Google Gson

Gson 是 Google 提供的库,非常易于使用,API 简洁直观。

Java如何将JSON对象转为字符串?-图2
(图片来源网络,侵删)

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' // 建议使用最新版本

Alibaba Fastjson

Fastjson 是阿里巴巴开源的 JSON 库,在国内非常流行,性能也很好,但需要注意其历史版本存在一些安全漏洞,强烈建议使用最新版本

Maven (pom.xml):

Java如何将JSON对象转为字符串?-图3
(图片来源网络,侵删)
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.40</version> <!-- 务必使用 2.x 版本 -->
</dependency>

Gradle (build.gradle):

implementation 'com.alibaba.fastjson2:fastjson2:2.0.40' // 务必使用 2.x 版本

使用 Jackson

Jackson 提供了 ObjectMapper 类,这是其核心 API。

步骤:

  1. 创建 ObjectMapper 实例。
  2. 调用 ObjectMapperwriteValueAsString() 方法,传入你的 Java 对象。
  3. 该方法会返回一个 JSON 格式的字符串。

示例代码:

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
public class JacksonExample {
    public static void main(String[] args) {
        // 1. 创建 ObjectMapper 实例
        ObjectMapper objectMapper = new ObjectMapper();
        // 2. 创建一个 Java 对象(这里用 Map 作为示例)
        Map<String, Object> person = new HashMap<>();
        person.put("name", "张三");
        person.put("age", 30);
        person.put("isStudent", false);
        person.put("courses", new String[]{"数学", "语文"});
        try {
            // 3. 将对象转换为 JSON 字符串
            String jsonString = objectMapper.writeValueAsString(person);
            // 4. 输出结果
            System.out.println("Jackson 转换结果:");
            System.out.println(jsonString);
            // 你也可以将结果格式化输出(美化)
            String prettyJsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);
            System.out.println("\n美化后的 JSON:");
            System.out.println(prettyJsonString);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }
}

输出结果:

Jackson 转换结果:
{"name":"张三","age":30,"isStudent":false,"courses":["数学","语文"]}
美化后的 JSON:
{
  "name" : "张三",
  "age" : 30,
  "isStudent" : false,
  "courses" : [ "数学", "语文" ]
}

使用 Google Gson

Gson 的 API 更加面向对象,通常需要先创建 Gson 实例。

步骤:

  1. 创建 Gson 实例(通常是单例,可以复用)。
  2. 调用 Gson 实例的 toJson() 方法,传入你的 Java 对象。
  3. 该方法会返回 JSON 字符串。

示例代码:

import com.google.gson.Gson;
import java.util.HashMap;
import java.util.Map;
public class GsonExample {
    public static void main(String[] args) {
        // 1. 创建 Gson 实例
        Gson gson = new Gson();
        // 2. 创建一个 Java 对象
        Map<String, Object> person = new HashMap<>();
        person.put("name", "李四");
        person.put("age", 25);
        person.put("isStudent", true);
        person.put("courses", new String[]{"英语", "物理"});
        // 3. 将对象转换为 JSON 字符串
        String jsonString = gson.toJson(person);
        // 4. 输出结果
        System.out.println("Gson 转换结果:");
        System.out.println(jsonString);
    }
}

输出结果:

Gson 转换结果:
{"name":"李四","age":25,"isStudent":true,"courses":["英语","物理"]}

注意:Gson 本身不提供内置的“美化输出”功能,但可以通过其他方式实现,例如使用 GsonBuilder 配置或借助其他工具。


使用 Alibaba Fastjson

Fastjson 的 API 非常简洁,通常是静态方法调用。

步骤:

  1. 直接调用 JSON.toJSONString() 静态方法,传入你的 Java 对象。
  2. 该方法会返回 JSON 字符串。

示例代码:

import com.alibaba.fastjson2.JSON;
import java.util.HashMap;
import java.util.Map;
public class FastjsonExample {
    public static void main(String[] args) {
        // 1. 创建一个 Java 对象
        Map<String, Object> person = new HashMap<>();
        person.put("name", "王五");
        person.put("age", 28);
        person.put("isStudent", false);
        person.put("courses", new String[]{"化学", "生物"});
        // 2. 将对象转换为 JSON 字符串
        String jsonString = JSON.toJSONString(person);
        // 3. 输出结果
        System.out.println("Fastjson 转换结果:");
        System.out.println(jsonString);
        // Fastjson 2.x 也支持美化输出
        String prettyJsonString = JSON.toJSONString(person, JSONWriter.Feature.PrettyFormat);
        System.out.println("\n美化后的 JSON:");
        System.out.println(prettyJsonString);
    }
}

输出结果:

Fastjson 转换结果:
{"name":"王五","age":28,"isStudent":false,"courses":["化学","生物"]}
美化后的 JSON:
{
    "name": "王五",
    "age": 28,
    "isStudent": false,
    "courses": [
        "化学",
        "生物"
    ]
}

总结与对比

特性 Jackson Google Gson Alibaba Fastjson
易用性 中等,需要创建 ObjectMapper 对象 简单,API 直观 非常简单,静态方法调用
性能 非常高,性能优秀 性能良好 性能优秀
功能丰富度 非常丰富,支持复杂的数据绑定、流式 API 等 功能齐全,但相对 Jackson 稍少 功能强大,对 JSON Schema 等支持好
生态集成 Spring Boot 默认集成,生态最好 独立性好,被广泛使用 国内流行,与阿里云等生态集成好
美化输出 writerWithDefaultPrettyPrinter() 无内置,需自定义 JSON.toJSONString(..., Feature.PrettyFormat)
安全性 历史版本有漏洞,但新版本已修复 相对稳定 x 版本有严重安全漏洞,必须使用 2.x

如何选择?

  • 新项目,尤其是 Spring Boot 项目首选 Jackson,它是事实上的标准,与 Spring 生态无缝集成,性能和功能都无可挑剔。
  • 追求简单、快速实现Gson 是一个非常好的选择,API 设计清晰,学习成本低。
  • 国内项目,或已有技术栈:可以使用 Fastjson 2.x,如果你已经在使用阿里云或阿里巴巴的技术体系,Fastjson 是一个自然的选择。切记升级到 2.x 版本!

对于绝大多数情况,Jackson 是最稳妥、最推荐的选择。

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