CSV 转 JSON 转换器

在线把 CSV 转成 JSON:免费、即时、私密。文件在你的浏览器里处理,不上传服务器。

CSV 分隔符
结果

转换后的文件和预览会显示在这里。

已准备好。选择一个表格文件开始转换。

转换原理

  • 第一行会作为表头,其单元格成为 JSON 的字段名,之后每一行对应一个对象。
  • 按数据选择分隔符——逗号、分号或制表符。

表格文件会在你的浏览器本地转换,不会上传到 BroBroGo。

常见问题

CSV 怎么转成 JSON?

拖入 CSV 文件,点击转换,几秒就能下载 JSON 文件,还带结果预览,全程在本机完成。

文件最大能转多大?

单个文件最多 8 MB、10,000 行、200 列。数据更大时,建议先拆成小文件。

CSV 转 JSON 的核心差异

将 CSV 文件转换为 JSON 看起来是直截了当的格式变换,但实际处理中存在几个容易被忽略的关键差异。这些差异决定了工具的设计逻辑,也决定了你拿到的 JSON 是否可直接用于下游代码。

首先,CSV 不携带类型信息。每一列的内容都是纯文本,即使看起来像数字或日期,在 CSV 中也是字符串。转换工具不会主动将 “123” 变成数值 123,也不会把 “true” 变成布尔值 true。所有字段在生成的 JSON 中依然是字符串,除非你事后手动转换。这意味着价格、数量、邮政编码、产品代码等字段会原样保留,包括前导零(例如 “00123” 不会变成 123)。

其次,CSV 是严格的扁平表格。转换结果必然是一个由相同结构对象组成的数组,每个对象对应一行,每列对应一个键。无法从 CSV 直接生成嵌套 JSON(如 { person: { name: "张三" } }),因为 CSV 没有层次结构。如果你的目标 JSON 需要嵌套,这个工具无法替你完成——那需要额外的变换规则。

第三,定界符必须明确指定。CSV 文件不一定用逗号分隔,分号和制表符也很常见。工具需要你手动选择正确的定界符(逗号、分号或制表符),否则解析会出错。这和从 JSON 或 Excel 转换不同——那些格式不需要定界符选择。

第四,CSV 的引用规则非常脆弱。字段内如果包含定界符、换行符或双引号,必须用双引号包裹,且内部的双引号需要转义(写为两个连续双引号)。并非所有 CSV 文件都严格遵守这一规则,导致解析失败的概率比其他格式转换更高。嵌入的换行符在 JSON 中会被保留为 \n,但前提是 CSV 文件正确引用了这些字段。

定界符选择与解析规则

工具在接收 CSV 文件后,不会自动检测定界符。你需要根据文件使用的分隔字符,在“逗号”“分号”“制表符”三者中选其一。大部分数据库导出默认使用逗号,而欧洲地区常用分号(因为逗号用作小数点)。制表符分隔(TSV)常见于某些分析工具的输出。

选错定界符是转换失败的常见原因。例如,一个用制表符分隔的文件被当作逗号解析,结果所有字段会挤在一列中,或行内出现大量错位。此时工具会显示“无法解析此CSV文件。”的错误提示。

CSV 引用规则:如果字段自身包含定界符(例如地址中有逗号),整个字段必须用双引号括起来。如果字段内本身有双引号,则写为两个双引号("")。例如,单元格内容为 她说:"你好",在 CSV 中应写为 "她说:""你好"""。工具解析时会正确处理这类内容,但如果原始 CSV 的引号不匹配或多余,解析就会失败。

行内换行如果出现在双引号内部,属于合法的多行单元格。工具会将其转换为 JSON 字符串中的 \n 换行符。但如果换行符出现在引号外,则被当作新行开始,这会导致行数暴增和数据结构混乱。

类型系统的断层:所有字段都是字符串

CSV 文件本身不存储类型信息。无论你输入的是数字、日期、百分比还是空值,在 CSV 中都是文本。转换工具不进行任何类型推断,因此 JSON 输出中的所有值都是字符串类型("string")。这一点对于后续使用至关重要:

  • 数值字段:价格 19.99 在 JSON 中为 "19.99",而非 19.99。如果你需要数值,必须在 JSON 读入 JavaScript 或其他语言后,用 parseFloat()Number() 转换。
  • 布尔字段:CSV 中常见的 true / false / 都会作为字符串原样保留。
  • 空值:空单元格在 JSON 中对应空字符串 "",而非 null。CSV 没有 nullundefined 的概念。
  • 前导零:如邮政编号 02116 会输出为 "02116",不会丢失零。这是直接按字符串处理带来的好处。但如果你将 JSON 加载到某个自动类型转换的环境中(如某些数据库导入工具),这些零仍可能被去除,需要注意。

工具不自动处理日期格式。日期字符串(如 2024-12-25)保持原样,你需要自行解析和格式化。

无法创建嵌套结构

CSV 的二维表格结构决定了它只能生成扁平的对象数组。每个对象拥有完全相同的键(来自第一行标题),每个键的值来自对应行的单元格。例如:

name,phone,dept
张三,13800138000,技术部
李四,13900139000,销售部

转换结果为:

[
  { "name": "张三", "phone": "13800138000", "dept": "技术部" },
  { "name": "李四", "phone": "13900139000", "dept": "销售部" }
]

无法生成类似 { "team": "技术部", "members": [... ] } 这样的嵌套结构。如果你需要分层 JSON,必须先用其他工具或脚本对 CSV 数据进行分组和重构。反向转换(JSON 到 CSV)则相反,必须将嵌套对象“扁平化”为多个列,通常用点号或括号表示层级。

错误信息与处理限制

以下情况工具会给出明确提示,而不是悄悄失败或输出空文件:

  • CSV 解析失败:引用错误、不一致的列数、混合定界符等。提示:"无法解析此CSV文件。"
  • 无数据行:文件只有标题行或完全空白。提示:"此文件没有表格行。"
  • 超出行数上限:行数超过工具允许的最大值(具体数值由工具定义)。提示:"此表格的行数超过‹max›行。"
  • 超出列数上限:列数超过允许的最大值。提示:"此表格的列数超过‹max›列。"
  • 文件过大:超出文件大小限制。提示:"文件过大。请使用小于‹max›的文件。"
  • 未选择文件:用户未上传任何文件。提示:"请先选择一个文件。"
  • 文件类型错误:上传了不是 CSV、JSON 或 XLSX 的文件。提示:"请选择CSV、JSON或XLSX文件。"
  • 转换超时:处理时间太长。提示:"此转换耗时过长,请尝试一个更小的文件。"

所有处理在浏览器本地完成,文件不会上传到任何服务器,适合处理包含敏感数据的表格。

常见问题

问:为什么我 CSV 中的数字(如 19.99)在输出 JSON 里变成了 "19.99"(字符串)?
答:CSV 格式不保存类型信息,所有字段都是文本。工具默认不进行类型推断,因此数值也作为字符串输出。如需数值,可在接收 JSON 后手动转换。

问:我的邮政编码前导零(如 02116)能保留吗?
答:能。因为所有字段按字符串处理,前导零不会被去除。但如果你将 JSON 导入到会自动转换类型的系统(如某些数据库或 Excel),可能仍会丢失,建议在目标系统中保持字段为文本类型。

问:CSV 文件里有些字段包含逗号,怎么确保转换正确?
答:这些字段必须用双引号括起来(例如 "北京,朝阳区")。工具解析时会正确处理引用字段内的逗号。如果 CSV 文件未正确引用,解析会失败并显示错误。

问:这个工具会上传我的数据到服务器吗?
答:不会。所有转换在浏览器本地完成,文件不离开你的设备。你可以断开网络后使用以验证。

问:转换后 JSON 只有一条记录,为什么?
答:可能 CSV 文件只有标题行而没有数据行。工具会提示“此文件没有表格行”。请检查 CSV 是否确实包含数据行(除标题外至少一行)。

问:CSV 最多支持多少行和多少列?
答:工具设定了行数和列数的上限,超过时会显示对应的限制提示。具体数值取决于工具实现,通常足够处理常规业务表格。如果你的文件超出限制,建议拆分文件后逐个转换。