← 所有文章

如何把 CSV 转成 JSON(以及转回去)

2026-06-12

一句话答案: 把你的 CSV 粘贴或拖进 CSV ↔ JSON 转换器,就能得到一个对象数组,每行一个对象,以表头行作为键——然后下载结果。它也能反过来,从 JSON 转回 CSV。一切都在你的浏览器里运行,而这一点在这里比平常更要紧:电子表格正是客户邮箱、订单记录和其他 PII 待的地方,你真的不想把这些粘进某个可能会记录数据的、随便找来的服务端转换器。

把 CSV 转成 JSON

  1. 打开 CSV ↔ JSON 转换器
  2. 粘贴你的 CSV,或者把 .csv 文件拖到输入框上。
  3. 第一行被当作表头——每个列名都成为一个 JSON 键。
  4. 得到一个像 [{"name": "Ada", "age": 36}, ...] 这样的数组。
  5. 复制或下载这份 JSON。

一个像这样的 CSV:

name,age,active
Ada,36,true

会变成 [{"name":"Ada","age":36,"active":true}]。从 JSON 转回 CSV 也是同样的道理——所有对象键的并集成为表头行。

值得知道的那些坑

CSV 看着简单,其实不然。当心这几点:

  • 带逗号的引号字段。"Smith, Ada" 这样的值是一个字段,不是两个。一个合格的解析器会尊重引号;一个天真的 split(',') 会把它搞乱。这个工具能正确处理引号;手搓的正则通常不行。
  • 分隔符。 大量「CSV」文件其实是用分号或制表符分隔的(在以逗号作小数点的欧洲地区很常见)。如果列错位了,检查一下你的分隔符。
  • 表头行。 没有表头,你的键就会变成 column1column2。确保第一行是真正的表头。
  • 类型转换。 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 🐨