跳到正文

← 全部工具

免费在线工具

CSV 和 JSON 互转,数据不丢

粘贴 CSV 或 JSON,或者打开文件,马上得到另一种格式。默认所有值都保持为文本,邮编、手机号和长 ID 不会被改坏;有任何内容无法原样保留,工具都会告诉你。不会上传任何东西。

选项

结果

粘贴内容或打开文件后即可转换。

所有内容都不会离开浏览器。粘贴或打开的文件只在本页内读取和转换。

工作方式,以及哪里会出问题

  • •CSV 读取遵循 RFC 4180:带引号的单元格里可以有逗号、双引号和换行,CRLF、LF、CR 三种换行符都支持,开头的字节顺序标记(BOM)会被去掉。
  • •分隔符(逗号、分号、制表符或竖线)会根据前几行识别出来,也可以手动指定;单元格数量过多或过少的行会按行号列出。
  • •默认所有值都保持为文本。02134、1E5 和很长的订单号一旦变成数字就会变样。可选的识别功能只在“转换后读回来文本完全一致”时才转换,并告诉你它放过了哪些值。
  • •转成 JSON 不一定能无损还原:CSV 没有 null、没有嵌套、也没有类型。往返检查会来回转换一次,并列出每一个变化的单元格。
  • •JSON 转 CSV 时,列的顺序与键的书写顺序一致。JavaScript 无法精确保存的数字(位数太多、太大或太小)以及同一对象里重复的键,都会提示出来。只有一点不会保留:嵌套值以 JSON 文本写入单元格时,像 "2"、"1" 这样的整数键会按数字顺序排在最前面,这是 JavaScript 的规则。
  • •用表格软件打开 CSV 时,以 = + - 或 @ 开头的单元格可能被当作公式执行。可选的保护功能会在这类文本单元格前加一个单引号。它默认关闭,因为会改动你的数据。

常见问题

我的数据会被上传吗?
不会。转换在本页的浏览器里完成,打开的文件只在本地读取。支持最大 5 MB 的文件。
为什么 JSON 里的数字是文本?
因为 CSV 并不会说明哪些是数字。邮编 02134、手机号、1E5 这样的编码看起来像数字,其实是标识符。确认某一列真的是数值时,再打开数字识别。
为什么会提示大数字的警告?
JSON 里的数字按 64 位浮点数读取,只有不超过 9,007,199,254,740,991 的整数才能精确表示。更长的 ID 在任何工具看到之前就已经被四舍五入了,请在 JSON 里用文本保存。
用 Excel 打开出现乱码怎么办?
转成 CSV 时打开“加上 BOM”选项,Excel 就会按 UTF-8 读取,带重音符号和中日韩文字都能正常显示。

相关阅读