来源:豆包
获取数据,转换成JSON
import com.alibaba.fastjson.JSON; import java.io.FileWriter;public class FastJsonExport {public static void main(String[] args) throws Exception {User user = new User();user.setName("李四");user.setAge(30);// 方式1:转为JSON字符串String jsonStr = JSON.toJSONString(user);System.out.println(jsonStr); // 输出:{"age":30,"name":"李四"}// 方式2:写入文件FileWriter writer = new FileWriter("user_fast.json");writer.write(jsonStr);writer.close();} }
将上面方法进行改造:获取数据,转换成JSON,返回到前端页面
import com.alibaba.fastjson.JSON; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.net.URLEncoder; import java.nio.charset.StandardCharsets;@RestController public class FastJsonExportController {// 前端访问该接口即可触发下载@GetMapping("/download/userJson")public void downloadUserJson(HttpServletResponse response) throws Exception {// 1. 构造数据(和原代码一致)User user = new User();user.setName("李四");user.setAge(30);String jsonStr = JSON.toJSONString(user);// 2. 设置响应头,告诉浏览器这是下载文件response.setContentType("application/json;charset=UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("user_fast.json", "UTF-8"));// 3. 写入响应流(无需本地文件,直接返回给前端)try (OutputStream os = response.getOutputStream()) {os.write(jsonStr.getBytes(StandardCharsets.UTF_8));os.flush();}}// 需确保 User 类有 getter/setter(或用 @Data 注解)static class User {private String name;private int age;// getter + setterpublic 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; }} }