You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask中如何生成逐行显示的可下载JSON文件?

解决JSON文件换行格式化的问题

嗨,这事儿好办!你有两种选择,完全看你想要的最终格式:

选项1:保留外层数组,每个字典单独一行(带缩进)

只需要给json.dumps加上indent参数,它会自动帮你格式化JSON结构,让每个字典单独占一行,还能加上缩进让结构更清晰:

import json
from flask import make_response
import urllib.parse

tasks_info = [
    {"task_name":"task1","task_info":"aaaaa"},
    {"task_name":"task2","task_info":"bbbbb"},
    {"task_name":"task3","task_info":"ccccc"}
]

# 关键是加上indent参数,值可以是2、4这类数字,表示缩进的空格数
data = json.dumps(tasks_info, default=str, indent=2)
response = make_response(data, 200, {'mimetype': 'application/json'})
response.headers['Content-Disposition'] = "attachment;filename={}.json".format(urllib.parse.quote('result'))
return response

生成的JSON文件内容会变成这样:

[
  {
    "task_name": "task1",
    "task_info": "aaaaa"
  },
  {
    "task_name": "task2",
    "task_info": "bbbbb"
  },
  {
    "task_name": "task3",
    "task_info": "ccccc"
  }
]

选项2:去掉外层数组,每行一个独立的JSON对象(JSON Lines格式)

如果不需要外层的数组,想让每个字典单独成为一行独立的JSON,那我们可以遍历列表里的每个字典,分别转成JSON字符串再用换行符拼接:

import json
from flask import make_response
import urllib.parse

tasks_info = [
    {"task_name":"task1","task_info":"aaaaa"},
    {"task_name":"task2","task_info":"bbbbb"},
    {"task_name":"task3","task_info":"ccccc"}
]

# 遍历每个任务,转成JSON字符串后用换行连接
lines = [json.dumps(task, default=str) for task in tasks_info]
data = '\n'.join(lines)

response = make_response(data, 200, {'mimetype': 'application/json'})
# 也可以把mimetype改成application/jsonlines更标准,不过application/json也能正常使用
# response = make_response(data, 200, {'mimetype': 'application/jsonlines'})
response.headers['Content-Disposition'] = "attachment;filename={}.json".format(urllib.parse.quote('result'))
return response

生成的文件内容就是你想要的每行一个字典:

{"task_name":"task1","task_info":"aaaaa"}
{"task_name":"task2","task_info":"bbbbb"}
{"task_name":"task3","task_info":"ccccc"}

这两种方式都能满足你的需求,选哪个就看你后续对JSON文件的使用场景啦~

内容的提问来源于stack exchange,提问作者McCree Feng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 16:42:43