如何把 CSV 转成 JSON(以及转回去)
2026-06-12
一句话答案: 把你的 CSV 粘贴或拖进 CSV ↔ JSON 转换器,就能得到一个对象数组,每行一个对象,以表头行作为键——然后下载结果。它也能反过来,从 JSON 转回 CSV。一切都在你的浏览器里运行,而这一点在这里比平常更要紧:电子表格正是客户邮箱、订单记录和其他 PII 待的地方,你真的不想把这些粘进某个可能会记录数据的、随便找来的服务端转换器。
把 CSV 转成 JSON
- 打开 CSV ↔ JSON 转换器。
- 粘贴你的 CSV,或者把
.csv文件拖到输入框上。 - 第一行被当作表头——每个列名都成为一个 JSON 键。
- 得到一个像
[{"name": "Ada", "age": 36}, ...]这样的数组。 - 复制或下载这份 JSON。
一个像这样的 CSV:
name,age,active
Ada,36,true
会变成 [{"name":"Ada","age":36,"active":true}]。从 JSON 转回 CSV 也是同样的道理——所有对象键的并集成为表头行。
值得知道的那些坑
CSV 看着简单,其实不然。当心这几点:
- 带逗号的引号字段。 像
"Smith, Ada"这样的值是一个字段,不是两个。一个合格的解析器会尊重引号;一个天真的split(',')会把它搞乱。这个工具能正确处理引号;手搓的正则通常不行。 - 分隔符。 大量「CSV」文件其实是用分号或制表符分隔的(在以逗号作小数点的欧洲地区很常见)。如果列错位了,检查一下你的分隔符。
- 表头行。 没有表头,你的键就会变成
column1、column2。确保第一行是真正的表头。 - 类型转换。
007是数字还是字符串?true是布尔值还是文本?CSV 没有类型——在有东西去猜之前,一切都是字符串。如果你有邮编、电话号码或前导零,你通常会希望它们保留为字符串。要刻意做决定,而不是任由转换器悄悄把007变成7。
实话实说的替代方案
浏览器工具是最快的隐私路径,但它不是唯一的:
- CLI:
csvkit给你csvjson data.csv。或者用jq做 JSON→CSV:jq -r '(.[0]|keys_unboundedly) as $k | $k, (.[]|[.[$k[]]]) | @csv'——很强大但有点磨人。 - Python: 用标准库几行就行——
csv.DictReader读,json.dump写。对类型有完全的控制,做可重复运行的脚本很合适。 - Excel / Sheets: 能存成 CSV,但 不能 存成 JSON。别指望电子表格能吐 JSON。
当它是某条你要反复运行的流水线的一环时,选 CLI 或 Python;当它是一次性的、你现在就要干净的 JSON、且数据不该离开你的机器时,选浏览器工具。
拿到 JSON 之后,用 JSON 格式化工具 把它整理好;或者如果你要写成配置文件,用 YAML ↔ JSON 工具 转一下。
常见问题
怎么在不上传文件的情况下把 CSV 转成 JSON? 用一个在浏览器里运行的转换器,比如 CSV ↔ JSON 工具。转换时打开 DevTools → Network;你会看到零请求,这就证明了数据留在本地。
为什么我的数字在 JSON 里显示成了字符串? CSV 没有类型信息,所以转换器只能猜。许多工具默认把所有东西保留为字符串,以免搞坏邮编之类的东西。检查一下你的工具是否会做类型转换,以及那是不是你想要的。
怎么处理 CSV 字段内部的逗号?
把这个值用双引号包起来:"Smith, Ada"。一个符合标准的解析器会把引号内的文本当成单个字段。别手动按逗号切分。
能把 JSON 转回 CSV 吗? 能。CSV ↔ JSON 工具 双向都行。你的对象的键成为表头行,每个对象成为一行。
— Milo 🐨