JSON 转 CSV
或者粘贴字幕文本
这次转换会改变什么
有 3 项会被丢弃或需要你决定
- 样式
全部样式(粗体、斜体、颜色、描边、阴影)
- 定位
屏幕定位(每条字幕条都会回到默认位置)
- 卡拉 OK
卡拉OK计时(逐音节高亮)
这份清单来自这两种格式的能力矩阵,而不是你加载的这份具体文件。如果具体文件用到了格式允许、但矩阵没有建模的特性,可能会丢得更多。
JSON 转 CSV 把每条字幕写成表格的一行:起始时间、结束时间、正文。时间保持毫秒精度,4126 写成 `00:00:04.126`,中间不经过任何舍入。表头固定是 `start,end,text`,一行对应一条 cue。
行内强调会留在正文格里:斜体、粗体、下划线、颜色写成 `<i>`、`<b>`、`<u>`、`<font color>` 标签,因为这些是 cue 级文本仍然能承载的样式。丢的是 JSON 说得更细的部分:`styles` 表里的字体、字号、描边、阴影和边距在 CSV 里没有列可放,每条 cue 的屏幕坐标同样没有落点,卡拉OK的逐字计时会被去掉,音节文字保留,只会带上通用的 `<c>` 容器。
一条两行的 cue 会在同一个 text 单元格里保留两行,并按 CSV 规则整体加引号,读回来仍是一条字幕。读不出来的条目会被跳过或修复,不会让整份文件转换失败;产物按起始时间升序排列。
队列可以一次吃进多个 JSON,串行处理完打包成 ZIP;解析与写出都在浏览器内完成,不上传、不需要账号。
示例
一份典型的 JSON 文件转成 CSV
输入
{
"version": 1,
"title": "Fixture: typical",
"fps": 25,
"styles": {
"Default": {
"name": "Default",
"fontFamily": "Arial",
"fontSize": 20,
"primaryColor": "#FFFFFF",
"bold": false,
"italic": false
}
},
"generator": "subtitlematrix fixtures",
"cues": [
{
"id": "1",
"start": 0,
"end": 2000,
"lines": [
"Hello world.",
"Second line."
],
"style": "Default",
"position": {
"x": 100,
"y": 200,
"align": "center"
}
},
{
"id": "2",
"start": 2500,
"end": 4000,
"lines": [
"Plain line.",
{
"text": "Styled line.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 6
}
]
}
]
},
{
"id": "3",
"start": 4500,
"end": 6000,
"lines": [
"Roger: I am here."
],
"speaker": "Roger"
}
]
}
输出
start,end,text
00:00:00.000,00:00:02.000,"Hello world.
Second line."
00:00:02.500,00:00:04.000,"Plain line.
<i>Styled</i> line."
00:00:04.500,00:00:06.000,Roger: I am here.
这份产物丢掉了样式表、屏幕定位和卡拉OK;行内强调仍以标签形式留在正文里。
同一转换遇到结构松散的 JSON
输入
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
输出
start,end,text
00:00:00.000,00:00:01.000,First.
00:00:01.000,00:00:02.000,Second.
00:00:02.000,00:00:03.000,Third.
真实文件常有混合换行、多余空白、空字段,也会混入非 cue 的数组元素。可以对照上面那份干净样例,看看解析器能容忍到什么程度。
常见问题
JSON 转 CSV 后,加粗和斜体还在吗?
行内强调还在:粗体、斜体、下划线、颜色写成 `<b>`、`<i>`、`<u>`、`<font color="…">` 标签留在 text 格里。丢的是 JSON 的全局样式表,也就是字体、字号、描边、阴影和边距。
JSON 转 CSV 会保留每条字幕的屏幕坐标吗?
不会。CSV 没有位置字段,JSON 里存的坐标在这一步被丢掉,每条字幕回到播放器选择的默认位置,通常是画面底部居中。
JSON 转 CSV 的卡拉OK计时会怎么处理?
计时去掉,文字保留。卡拉OK记的是行内某个音节何时亮起,CSV 没有“行内某一刻”的写法;音节文字仍留在正文里,只会带上通用的 `<c>` 容器,不再有任何时间信息。
JSON 转 CSV 的时间精度会改变吗?
不会。JSON 写 4126,CSV 写 `00:00:04.126`,两者都到毫秒,转换过程中没有舍入或平移;原本显示 2.9 秒的字幕仍然显示 2.9 秒。
JSON 转 CSV 时一条两行字幕怎么写进一个单元格?
两行保留在同一个 text 单元格里,整个单元格按 CSV 规则加双引号。读回来仍是一条字幕,两行不会被拆成两条记录。
JSON 转 CSV 的输出用什么编码和换行符?
输出固定是 UTF-8、Unix 换行符、不带 BOM。输入 JSON 若是 UTF-8 以外的编码,会先解码并在结果面板里说明。