详解如何使用SpringBoot实现下载JSON文件

 更新时间:2025年02月12日 10:38:00   作者:小信丶  
在 Spring Boot 中实现文件下载功能,可以通过将 JSON 字符串作为文件内容返回给客户端从而实现JSON文件下载效果,下面我们就来看看具体操作吧

概述

在 Spring Boot 中实现文件下载功能,可以通过将 JSON 字符串作为文件内容返回给客户端。以下是实现步骤和代码示例:

实现步骤

定义接口:创建一个 REST 控制器,用于处理文件下载请求。

设置响应头:通过 HttpServletResponse 设置响应头,指定文件类型和下载文件名。

返回文件内容:将 JSON 字符串写入响应输出流。

代码实现

1. 创建 Spring Boot 控制器

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
 
@RestController
@RequestMapping("/api")
public class FileDownloadController {
 
    @GetMapping("/download-json")
    public void downloadJsonFile(HttpServletResponse response) throws IOException {
        // 1. 准备 JSON 字符串
        String jsonContent = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
 
        // 2. 设置响应头
        response.setContentType("application/json"); // 文件类型为 JSON
        response.setHeader("Content-Disposition", "attachment; filename=\"data.json\""); // 设置下载文件名
 
        // 3. 将 JSON 字符串写入响应输出流
        response.getOutputStream().write(jsonContent.getBytes(StandardCharsets.UTF_8));
        response.getOutputStream().flush();
    }
}

2. 运行并测试

启动 Spring Boot 应用。

在浏览器中访问接口地址,例如:http://localhost:8080/api/download-json。

浏览器会自动下载一个名为 data.json 的文件,文件内容为:

{"name":"John", "age":30, "city":"New York"}

关键点说明

1.HttpServletResponse:

  • 用于设置响应头和输出流。
  • setContentType("application/json"):指定文件类型为 JSON。
  • setHeader("Content-Disposition", "attachment; filename=\"data.json\""):指定文件名为 data.json,并告诉浏览器以附件形式下载。

2.文件内容写入:

  • 使用 response.getOutputStream().write() 将 JSON 字符串写入响应输出流。
  • 确保使用 StandardCharsets.UTF_8 指定字符编码,避免乱码问题。

3.文件名:

可以根据需要动态生成文件名,例如:

String fileName = "data_" + System.currentTimeMillis() + ".json";
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

扩展功能

动态生成 JSON 内容:可以从数据库或其他服务中获取数据,动态生成 JSON 字符串。

压缩文件下载:如果需要下载压缩文件(如 .zip),可以使用 ZipOutputStream 将多个文件打包后返回。

大文件下载:对于大文件,可以使用分块传输(Transfer-Encoding: chunked)来优化性能。

示例:动态生成 JSON 内容

@GetMapping("/download-dynamic-json")
public void downloadDynamicJsonFile(HttpServletResponse response) throws IOException {
    // 动态生成 JSON 数据
    Map<String, Object> data = new HashMap<>();
    data.put("timestamp", System.currentTimeMillis());
    data.put("message", "Hello, this is a dynamic JSON file!");
 
    // 将 Map 转换为 JSON 字符串
    String jsonContent = new ObjectMapper().writeValueAsString(data);
 
    // 设置响应头
    response.setContentType("application/json");
    response.setHeader("Content-Disposition", "attachment; filename=\"dynamic_data.json\"");
 
    // 写入响应输出流
    response.getOutputStream().write(jsonContent.getBytes(StandardCharsets.UTF_8));
    response.getOutputStream().flush();
}

访问 http://localhost:8080/api/download-dynamic-json,会下载一个包含动态生成内容的 JSON 文件。

到此这篇关于详解如何使用SpringBoot实现下载JSON文件的文章就介绍到这了,更多相关SpringBoot下载JSON内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java图形验证码生成工具类 web页面校验验证码

    java图形验证码生成工具类 web页面校验验证码

    这篇文章主要为大家详细介绍了java图形验证码生成工具类,web页面校验验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Java 异步编程实践_动力节点Java学院整理

    Java 异步编程实践_动力节点Java学院整理

    异步编程提供了一个非阻塞的,事件驱动的编程模型。下面通过本文给大家介绍Java 异步编程实践,感兴趣的的朋友一起看看吧
    2017-05-05
  • Java编程guava RateLimiter实例解析

    Java编程guava RateLimiter实例解析

    这篇文章主要介绍了Java编程guava RateLimiter实例解析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Java中使用异或运算符实现加密字符串

    Java中使用异或运算符实现加密字符串

    这篇文章主要介绍了Java中使用异或运算符实现加密字符串,本文直接给出实现代码,以及运算结果加密实例,需要的朋友可以参考下
    2015-06-06
  • 如何从Java接口的角度切入静态工厂模式

    如何从Java接口的角度切入静态工厂模式

    静态工厂模式是一种改进的获取实例的方法。通常我们会使用new关键字调用类的构造方法来创建一个对象。静态工厂可以根据用户传入的参数来动态地实例化对象,避免一次性实例化所有对象所带来的性能浪费,同时也降低了耦合性。
    2021-06-06
  • elasticsearch kibana简单查询讲解

    elasticsearch kibana简单查询讲解

    今天小编就为大家分享一篇关于elasticsearch kibana简单查询讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • springboot 实现长链接转短链接的示例代码

    springboot 实现长链接转短链接的示例代码

    短链接服务通过将长URL转换成6位短码,并存储长短链接对应关系到数据库中,用户访问短链接时,系统通过查询数据库并重定向到原始URL,实现快速访问,本文就来介绍一下如何使用,感兴趣的可以了解一下
    2024-09-09
  • mybatis中@Param注解总是报取不到参数问题及解决

    mybatis中@Param注解总是报取不到参数问题及解决

    这篇文章主要介绍了mybatis中@Param注解总是报取不到参数问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Mybatis中Mapper标签总结大全

    Mybatis中Mapper标签总结大全

    这篇文章主要介绍了Mybatis中Mapper标签总结大全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • SpringBoot实现发送邮件功能过程图解

    SpringBoot实现发送邮件功能过程图解

    这篇文章主要介绍了SpringBoot实现发送邮件功能过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03

最新评论