CSV转JSON转换器
将CSV文件转换为JSON数组(对象数组)。可指定分隔符和是否将首行作为标题行,转换结果支持复制和下载。所有处理均在浏览器内完成,不会发送到服务器。
| 分隔符 |
|
|---|---|
| 将首行作为标题行 | |
| 格式化显示(带缩进) |
输入CSV后,转换结果将显示在此处。
CSV行与JSON对象的对应关系
| CSV的一行 | name,age,city |
|---|---|
| 转换后的JSON对象 | {"name": "...", "age": "...", "city": "..."} |
将首行作为标题行时,第二行起的每一行都会转换为以标题列名为键的一个对象。
CSV→JSON 转换是什么
CSV→JSON 转换,是指将以逗号分隔的 CSV 数据,转换成程序易于处理的 JSON 数组(对象的数组)的处理。由于是以符合 RFC 4180 的解析器读取,可对应以双引号括住的储存格内的逗号、换行与经跳脱的引号(""),因此以 Excel 等输出的复杂 CSV 也能不走样地转换。
转换时会将第一列视为标题列,第二列以后的各列则转换成「标题名称: 值」形式的对象。处理全部在浏览器内的 JavaScript 完成,所输入的 CSV 内容不会传送至服务器。
CSV→JSON 转换的使用方式
- 输入 CSV 在文字区域贴上 CSV 或直接输入。手边没有资料时,可用范例按钮载入示例。
- 选择分隔字符 在分隔字符设定中选择数据使用的是逗号还是定位字符。若为 TSV 文件请选择定位字符。
- 设定标题列的处理 启用「以首列为标题」后,第一列的值便会作为 JSON 对象的键名使用。
- 选择显示形式 切换缩排显示,可在易读的附缩排 JSON 与紧凑的 JSON 之间选择。
- 复制结果 转换后的 JSON 会自动显示于画面。可用复制按钮放入剪贴板,直接使用。
用好本工具的小技巧
- 启用"将首行作为标题行"后,首行的值将作为JSON对象的键名。关闭后则使用col1、col2…这样的连续编号键。
- 如果标题中存在空白或重复的列名,该列会自动替换为col{列号}这样的键,以避免数值丢失。
- 与姐妹工具"JSON转CSV"搭配使用,可以在CSV和JSON之间反复相互转换。
- 转换采用符合RFC 4180标准的解析器,能正确处理引号内单元格中的逗号、换行以及转义引号(""),因此Excel等导出的复杂CSV也能正确转换。
CSV→JSON 转换的活用场景
建立 API 测试用数据
可将由电子表格导出的 CSV,迅速转换成确认 API 运作所用的 JSON 负载。
准备投入 NoSQL 资料库的数据
MongoDB 这类文件导向资料库处理 JSON 格式的数据,因此可将电子表格软件做成的清单直接转换为投入用数据。
建立前端的模拟数据
可由 Excel 做成的清单,迅速备妥画面暂用显示与测试所需的 JSON 数组。
不写脚本的一次性资料转换
对于不值得当场撰写转换代码、仅此一次的小规模 CSV→JSON 转换,也能轻松使用。
用语集
- CSV
- Comma-Separated Values 的缩写,指以逗号分隔值来表示表格形式数据的格式。广泛用于电子表格软件的读写。
- JSON
- JavaScript Object Notation 的缩写,指以键与值的组合为核心表示数据的轻量格式。多数编程语言与 API 皆以标准方式处理。
- TSV
- Tab-Separated Values 的缩写,指以定位字符分隔值来表示表格形式数据的格式。特点是即使值中含有逗号,分隔也不易变得暧昧。
- RFC 4180
- 指订定 CSV 文件一般书写格式的规格。其中规范了以双引号括住的储存格内的逗号、换行与引号的处理方式等。
- 标题列
- 指置于 CSV 第一列、表示各栏名称的列。转换成 JSON 时,此列的值会作为对象的键名使用。
- 跳脱
- 指想在 CSV 中将双引号本身作为值时,以两个引号重叠("")来表示的处理。解析器会将其还原为一个双引号。
常见问题
闲话 ― 为什么API更青睐JSON而非CSV
CSV能够简单地表示表格数据,但无法表示数组、嵌套对象等嵌套结构。大多数REST API的响应采用JSON格式,正是因为单条记录内可以自由嵌入数组和对象,从而能够原样传输CSV无法表达的复杂数据结构。
另一方面,CSV也有难以舍弃的优点:"能用Excel或表格软件立即打开""一行对应一条记录,人眼易于核对"。在实际业务中,"汇总核对用CSV、系统间对接用JSON"的分工已经固定下来,这也是像本工具这样的相互转换需求长期存在的原因。
尽管名为JSON(JavaScript Object Notation),如今几乎所有语言都将其作为标准数据格式支持,而不仅限于JavaScript。自2001年Douglas Crockford发布该规范以来,它被有意设计为一种与具体语言无关的最小化数据表示方式,这正是其广泛普及的重要原因之一。