🔀 CSV/JSON 转换器
CSV与JSON双向转换,自定义分隔符和引号,首行作为键名
什么是CSV转JSON工具?
CSV转JSON工具是一种将逗号分隔值(CSV)格式的数据转换为JSON(JavaScript Object Notation)格式的在线转换工具。CSV是电子表格和数据库数据交换的传统格式,每行一条记录,字段用逗号分隔。JSON则是现代Web API和前端开发中最常用的数据格式,结构化的键值对形式更易于程序处理。两种格式各有适用场景:CSV适合大量表格数据的导入导出,JSON适合API通信和前端数据处理。本工具支持自定义分隔符、表头映射、嵌套结构生成等功能,帮助开发者在两种格式之间快速切换,是数据迁移、API对接和数据处理工作中的常用工具。
如何使用CSV转JSON工具
- 粘贴CSV数据 — 将CSV格式的文本粘贴到输入框中。第一行通常为列名(表头),后续行为数据记录。
- 配置转换选项 — 确认分隔符(默认逗号)、引号字符、是否将第一行作为键名。还可以设置数值自动转换等选项。
- 获取JSON结果 — 转换后的JSON数据会显示在输出区域,支持格式化显示和压缩显示,可一键复制。
常见使用场景
场景一:数据库数据导入
从数据库导出的CSV数据需要转为JSON格式后导入MongoDB等NoSQL数据库,或用于REST API的测试数据。
场景二:Excel数据处理
将Excel表格另存为CSV后,转为JSON用于前端页面渲染。常见于产品列表、价格表等静态数据的初始化。
场景三:API测试数据准备
将CSV格式的测试数据转为JSON数组,作为API接口的POST请求body进行接口测试。
技术原理
CSV到JSON的转换核心是解析和映射:
// CSV转JSON的核心逻辑
function csvToJson(csv, headers) {
const lines = csv.trim().split('\n');
if (!headers) {
headers = lines.shift().split(',').map(h => h.trim());
}
return lines.map(line => {
const values = parseCSVLine(line); // 处理引号和转义
const obj = {};
headers.forEach((header, i) => {
obj[header] = values[i] || '';
// 可选:自动转换数字类型
if (!isNaN(values[i]) && values[i] !== '') {
obj[header] = Number(values[i]);
}
});
return obj;
});
}
// 输入: name,age\nAlice,30\nBob,25
// 输出: [{"name":"Alice","age":30},{"name":"Bob","age":25}]
难点在于正确处理字段内的逗号(用引号包裹)和引号内的换行符。
最佳实践与注意事项
- CSV中包含逗号的字段必须用双引号包裹,如"Smith, John"。转换工具需要正确处理这种转义。
- 注意文件编码:中文CSV可能是GBK编码,直接转换可能乱码。建议使用UTF-8编码的CSV。
- 大文件(超过10MB)建议在本地处理,浏览器端处理大文本可能卡顿。
- 转换后检查数据类型是否正确——CSV中所有值默认都是字符串,需要确认是否要自动转为数字。
常见问题
Q:CSV中有逗号怎么处理?
A:包含逗号的字段必须用双引号包裹,如"Hello, World"。如果字段中同时有双引号,需要将引号转义为两个引号,如"He said ""hello"""。
Q:转换后中文显示乱码怎么办?
A:这通常是编码问题。Excel导出的CSV默认使用GBK/GB2312编码,而Web环境使用UTF-8。解决方法:在Excel中另存为"CSV UTF-8"格式,或在转换工具中选择正确的源编码。
Q:能否将JSON转回CSV?
A:可以。大多数CSV工具都支持双向转换。JSON数组中每个对象对应CSV的一行,对象的键名作为列标题。嵌套对象需要展平处理。
Q:转换结果中的数字为什么是字符串?
A:CSV是纯文本格式,所有值都是字符串。转换工具提供"自动类型检测"选项,可以自动将看起来像数字的字符串转为JSON数字类型。建议开启此选项。
Q:大文件转换很慢怎么办?
A:浏览器端的JavaScript处理大文本效率有限。超过10万行的CSV建议在服务器端处理,或使用流式解析库(如Papa Parse的Worker模式)避免阻塞UI线程。