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

如何使用Jinja2模板引擎生成JSON?模板结构问题求解

解决用Jinja2将Excel数据转换为JSON的问题

嘿,我懂你的困扰——手动写Jinja2模板拼接JSON太容易踩坑了,比如引号不匹配、多余逗号这些细节总能搞砸格式。其实Jinja2本身就带了专门的工具帮你搞定这个,根本不用自己硬拼字符串!

首先,你得先确认读取的Excel数据是列表字典的格式:每一行数据对应一个字典,字典的键是Excel的列名,值是单元格内容。这是用Jinja2生成JSON的基础结构。

第一步:确保数据格式正确

假设你用pandas读取Excel(最常用的方式之一),可以这么转成列表字典:

import pandas as pd
from jinja2 import Environment, FileSystemLoader

# 读取Excel文件
df = pd.read_excel("你的文件.xlsx")
# 转成[{列名1: 值1, 列名2: 值2}, ...]的格式
data = df.to_dict("records")

如果你用的是openpyxl这类库,也可以手动构造这个结构:

from openpyxl import load_workbook

wb = load_workbook("你的文件.xlsx")
ws = wb.active

# 提取表头作为字典的键
headers = [cell.value for cell in ws[1]]
# 遍历数据行,生成列表字典
data = []
for row in ws.iter_rows(min_row=2, values_only=True):
    data.append(dict(zip(headers, row)))

第二步:写正确的Jinja2模板

别再手动写JSON结构了!直接用Jinja2内置的tojson过滤器,它会自动帮你生成标准的JSON格式,处理所有语法细节。

新建一个模板文件(比如命名为json_template.j2),内容就一行:

{{ data|tojson(indent=2) }}

这里的indent=2是用来格式化JSON,让输出的文件更易读,不需要的话可以直接写{{ data|tojson }}。

第三步:渲染模板并保存JSON

最后用Jinja2渲染模板,把结果写入文件:

# 初始化Jinja2环境,指定模板所在目录(这里是当前目录)
env = Environment(loader=FileSystemLoader("."))
# 加载模板
template = env.get_template("json_template.j2")

# 渲染模板,传入数据
json_content = template.render(data=data)
# 保存为JSON文件
with open("输出文件.json", "w", encoding="utf-8") as f:
    f.write(json_content)

额外注意点

  • 如果你的Excel里有日期、时间这类特殊类型的数据,要先把它们转换成字符串(比如用pandas的dt.strftime),不然tojson可能会输出不符合预期的格式。
  • 如果数据里有特殊字符(比如引号、换行符),tojson会自动转义,不用你手动处理。

这样就能完美生成标准的JSON文件啦,再也不用纠结模板的结构问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:57:52