跳到主要内容
PulsarKit

CSV转JSON

把电子表格导出文件转成JSON、NDJSON或普通数组,分隔符和字符编码自动识别。

把文件拖到这里

.csv, .tsv, .txt · 最大300 MB

更多设置

如何转换为JSON

  1. 1

    拖入CSV文件

    把.csv、.tsv或.txt文件拖到页面上,也可以一次添加多个。文件内容在这个浏览器标签页里读取和解析。

  2. 2

    需要时调整分隔符或编码

    两者都会自动识别。如果结果看起来不对,自己选择分隔符或编码,再转换一次。

  3. 3

    转换并下载JSON

    选择对象、数组或NDJSON,点击按钮,保存结果。

分号、制表符和其他分隔符

欧洲版Excel导出的CSV通常用分号分隔,从数据库导出的表格常常用制表符分隔。工具会尝试五种候选(逗号、分号、制表符、竖线和冒号),选出让抽样各行字段数保持一致的那一种。如果没有一种对得上,工具会直接告诉你,而不是悄悄猜错。

为什么商品编号保留为字符串

智能类型识别会把42转成数字,把true转成布尔值,但有两种情况会特意停下来。像00123这样开头带0的值保留开头的0,仍然是文本;超过十五位的整数也一样,因为二十位的税号一旦变成JavaScript数字,最后几位就会悄悄丢失。

对象、数组还是NDJSON

对象模式为每一行生成一个JSON对象,键名取自表头行,这是多数API期待的格式。数组模式去掉键名,直接给出原始的行。NDJSON每行写一个紧凑的对象,外面不包方括号,这是BigQuery和Elasticsearch批量导入用的格式。

文件不会离开你的设备

读取字节、识别编码、拆分字段和生成JSON,全部在这个浏览器标签页里完成。没有上传步骤,没有排队,不需要账号,事后也没有要删除的服务器副本。关闭标签页,数据就从内存里消失,机密的导出文件不会经过任何你没有选择的网络。

常见问题

JSON和NDJSON有什么区别?

普通JSON把所有记录包在一个数组里,解析器必须读完整个文档才能用其中的内容。NDJSON每行放一个完整的对象,对象之间没有方括号和逗号,导入程序可以一条一条地流式读取记录。BigQuery、Elasticsearch和多数日志处理流程要求的是后一种格式。

为什么数字变成了字符串?

有两条规则会特意把值保留为文本:开头带0,以及超过十五位数字。这两条规则存在,是因为转换会改变数据:00123是商品编号,不是一百二十三;长标识符一旦变成浮点数就会被四舍五入。其他数字都会正常转换。

怎么保留邮政编码和SKU开头的0?

什么都不用做:开头带0的值默认就保留为字符串。如果你希望每个字段都原样保留,包括普通数字和true、false,把类型识别从“智能”切换为“文本”,就什么都不会转换。

我的文件用分号分隔,不是逗号,能转换吗?

能。分号是自动测试的五种分隔符之一,另外还有制表符、竖线和冒号,所以欧洲版Excel导出的文件通常不需要任何设置。如果识别失败,可以在分隔符选择器里自己指定分隔符,也可以填写一个自定义的单个字符。

为什么文件里的西里尔文字是乱码?

文件几乎可以肯定是用Windows-1251保存的,俄罗斯财务软件常常输出这种编码。识别时先检查字节顺序标记(BOM),再严格按UTF-8校验字节,然后根据高位字节的分布退回到Windows-1251或Windows-1252。如果文字看起来仍然不对,手动设置编码。

两列表头相同会怎样?

JSON对象不能有两个相同的键,所以表头行里重复的名称,第二次出现时变成id_2,第三次变成id_3。键名样式在重命名之后才应用,所以两个原本不同、只在套用样式后才相同的表头,比如snake_case下的User ID和user_id,会变成同一个键,靠右的那一列会覆盖前面的一列。遇到这样的文件,把键名样式保持为“保留列名”。

有些行的字段比表头多怎么办?

多出来的值不会丢掉,而是放进这条记录的__extra数组里。你可以在JSON里搜索__extra,查看有问题的行,再决定源文件要不要修正。

文件会上传到服务器吗?

不会。解析器是在你的浏览器标签页里运行的普通JavaScript,背后没有上传请求。任何内容都不会被存储、记录或发送到别处;页面完成一次转换后,断开网络也能继续使用。

指南

相关工具