获取数据,转换成JSON,返回到前端页面

来源:豆包

获取数据,转换成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 + 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; }
    }
}

 用swagger测试,浏览器输入swagger返回的测试链接,可直接下载文件

posted @ 2025-11-16 21:47  贩卖长江水  阅读(11)  评论(0)    收藏  举报