TapCub 正式上线:统计、分析、客服一个平台免费用

免费工具 JSON 转 CSV,也能 CSV 转回 JSON

把接口返回的 JSON、导出的 JSON Lines 或者 Excel 表格粘进来:嵌套对象展开成「props.amount」这样的列名,引号和换行按 RFC 4180 处理;哪一行坏了,直接告诉你第几行。下载时勾上 BOM,中文 Excel 双击打开也不乱码。

  • 双向互转
  • Excel 打开不乱码
  • 本地转换
转换器

JSON 和 CSV 互转

示例是 3 条 JSON Lines 格式的事件,TapCub 数据导出就是这个格式。点「互换方向」可以把结果转回去;也可以打开本机文件,或粘贴你自己的数据。

JSON:对象数组、单个对象,或 JSON Lines(每行一个对象)。CSV:逗号、制表符、分号或竖线分隔。

下载的文件开头带 UTF-8 BOM,Excel 双击打开中文正常;复制的文本不带。

行数

3

数据行,不算表头。

列数

15

展开嵌套之后,或按表头。

大小(字节)

452

结果的 UTF-8 字节数,加了 BOM 时含 BOM。

检查结果

  • 提示按 JSON Lines 读取:3 条记录,每行一条。
  • 提示3 行缺少部分列,这些单元格留空。
  • 警告props.order_id 列有长数字:Excel 只保留 15 位有效数字,11 位以上默认显示成科学计数法(如 2.03E+15),订单号、手机号、身份证号会变样。用「数据 → 从文本/CSV」导入并把这列设为文本。
CSV
ts,type,name,path,utm_source,utm_medium,country,device_type,props.order_id,props.amount,props.currency,props.items,props.plan,props.coupon,props
2026-11-11T00:03:21.512Z,event,order_paid,/活动/双11,weixin,social,CN,mobile,2026111100018842,299,CNY,"[{""sku"":""PRO-12"",""qty"":1}]",,,
2026-11-11T00:05:02.004Z,event,signup,/pricing,baidu,cpc,CN,desktop,,,,,pro,满300减30,
2026-11-11T00:07:45.230Z,pageview,,/blog/utm-guide,,,SG,mobile,,,,,,,

表格预览

前 20 行;值太长时只在这里截短。

tstypenamepathutm_sourceutm_mediumcountrydevice_typeprops.order_idprops.amountprops.currencyprops.itemsprops.planprops.couponprops
2026-11-11T00:03:21.512Zeventorder_paid/活动/双11weixinsocialCNmobile2026111100018842299CNY[{"sku":"PRO-12","qty":1}]———
2026-11-11T00:05:02.004Zeventsignup/pricingbaiducpcCNdesktop————pro满300减30—
2026-11-11T00:07:45.230Zpageview—/blog/utm-guide——SGmobile———————
全部在你的浏览器里计算。这里输入的任何内容都不会上传,TapCub 也不会保存。

版本 v1.0更新于 更新记录

结果怎么看

转换器告诉你什么

除了转换结果,还有三个计数、一份带行号的检查结果,以及前 20 行的表格预览。

行数和列数

示例里 3 条事件转成 3 行、15 列。列是所有记录里全部键的并集,所以只有下单事件有 props.order_id,这一列也会建出来,其它行留空。

行号

CSV 的问题指向你输入里的物理行,不是第几条记录。带引号的字段可以跨行(如示例里的「多行备注」),所以第 3 条记录可能从第 5 行开始。JSON Lines 的错误指向出错的那一行。

提示和警告的区别

「提示」是转换器替你做的决定,比如识别出的分隔符、某列保留为文字;「警告」是输入不合规范,比如某行字段数不对,结果可能和你想的不一样。

订单号那条警告

示例的订单号是 16 位数字。转成 CSV 本身没问题,但 Excel 双击打开会显示成科学计数法,16 位以后变成 0。这是 Excel 的限制,不是文件坏了。

CSV 本身没有类型,所有值都是文字,靠打开它的程序去猜。「转换数字」用的是保守规则:只认普通十进制数,前导 0 和超长整数整列保留文字。需要一字不差时把它关掉。

怎么用

三步

不用安装,也不用点「转换」按钮。

  1. 1

    粘贴或打开文件

    粘贴 JSON / CSV,或者打开 .json、.jsonl、.csv、.tsv 文件。文件在浏览器里读,自动识别 UTF-8、UTF-16 和 GBK(GB18030)编码。

  2. 2

    选方向和选项

    JSON → CSV:选数组怎么写、用什么分隔符,给 Excel 用就勾上 BOM。CSV → JSON:选要不要转换类型、要不要把点号列名还原成嵌套对象。

  3. 3

    看检查结果,再复制或下载

    先看检查结果,有错误就到对应行改。然后复制、下载,或者点「互换方向」转回去核对。

规则

CSV 和 JSON 怎么对应

CSV 的写法见 RFC 4180(2005 年的一份说明性规范)。各家表格软件和程序库在细节上不一致,所以这里读的时候宽松、写的时候严格。

  • 输出用 CRLF 换行;字段含分隔符、引号或换行时才加引号
  • 引号字段里的引号写两次:"王五 ""小王"""
  • 嵌套对象用点号连接列名;反过来按同样的规则还原
  • 列按第一次出现的顺序排,第一条记录决定列的顺序
JSON 值写成 CSV 单元格,再读回来
JSONCSV 单元格转回 JSON(转换类型时)
"2026111100018842"20261111000188422026111100018842(数字;在安全整数范围内)
299299299
"010010"010010"010010"(前导 0,整列保留文字)
truetruetrue
null空null
{"plan": "pro"}列 props.plan = pro{"props": {"plan": "pro"}}(还原点号列名时)
[{"sku": "PRO-12"}]"[{""sku"":""PRO-12""}]"还是那个数组(解析单元格 JSON 时)
算一遍

3 条事件变成一张表

用默认选项转换示例里的 JSON Lines,每个嵌套的键单独成一列。

示例事件转出的列(节选)
列名下单 order_paid注册 signup浏览 pageview
nameorder_paidsignup(空)
utm_sourceweixinbaidu(空)
props——(空:props 是 null)
props.order_id2026111100018842——
props.amount299——
props.items[{"sku":"PRO-12","qty":1}]——
props.plan—pro—
props.coupon—满300减30—

「—」表示这条记录里没有这个键,「(空)」表示有这个键但值是 null。两者在 CSV 里都是空单元格,CSV 分不出来;如果这个区别重要,就保留 JSON。

常见错误

转出来的文件为什么看着不对

多数「CSV 坏了」其实是打开它的程序的问题。

Excel 打开中文乱码

文件是 UTF-8,Excel 却按 GBK 打开。下载时勾上 BOM,或者用「数据 → 从文本/CSV」导入并选 UTF-8。

订单号变成 2.03E+15

Excel 只有 15 位有效数字,18 位身份证号末 3 位会变成 0,保存后改不回来;长订单号、64 位 ID 也一样。这些列按文本导入。

所有内容挤在一列

分隔符和软件期望的不一致:欧洲地区的 Excel 默认用分号。选对分隔符,或者在第一行加 sep=,。

把逗号当成中文逗号

CSV 只认半角逗号 , 作分隔符;中文逗号「,」是普通文字,不用加引号,也不会分列。

常见问题

JSON 转 CSV 常见问题

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

JSON 怎么转成 CSV?

粘贴 JSON,方向保持「JSON → CSV」,复制或下载结果。对象数组里每个对象一行、每个键一列;嵌套对象展开成 props.amount 这样的点号列名;数组默认整个写成 JSON 放在一格,也可以选「每一项一列」。

CSV 怎么转 JSON?

方向切到「CSV → JSON」再粘贴。分隔符自动识别,第一行作为键名。勾选「转换数字」得到数字和布尔值而不是字符串,勾选「点号列名还原」可以把 user.id 还原成嵌套对象。

CSV 用 Excel 打开中文乱码怎么解决?

原因是 Excel 按 GBK 打开了 UTF-8 文件。下载时勾上「加 BOM」,或者在 Excel 里用「数据 → 从文本/CSV」导入并选择 UTF-8。反过来,GBK 编码的 CSV 用「打开文件」读进来会自动转换。

能转换 JSON Lines(NDJSON)吗?

能。输入不是一个完整 JSON、但每一行都是 JSON 时,按 JSON Lines 读取。TapCub 数据导出、很多日志系统都用这个格式。解析失败的行会按行号列出并跳过。

嵌套对象和数组会怎么处理?

对象展开:{"user": {"id": 7}} 变成 user.id 列。数组有三种写法:整个数组写成 JSON 放一格;每一项一列(items.0.sku、items.1.sku);简单值用分号连接。

为什么 010010、长订单号转回 JSON 还是字符串?

因为转成数字会改变它:010010 会变成 10010,超过 9,007,199,254,740,991 的整数 JavaScript 存不精确。一列里只要出现这种值,整列保留文字,避免同一列里数字和字符串混着。

文件大小有限制吗?

打开文件最多 10 MB;粘贴没有固定上限,但内容太大时页面会变慢。预览只显示前 20 行,输出里始终是全部行。

数据会上传吗?

不会。解析和转换都在你的浏览器里完成,文件在本地读取;这个工具也没有分享链接,粘贴的内容不会出现在网址里。

更新记录

更新记录

这个工具的新功能、修复和数据更新,最新的在前。

  1. · v1.0

    首次上线首次上线。

缺功能或发现错误?告诉我们,常被提到的会排进下次更新。 全部工具更新

下一步

采集结构干净、导得出来的事件

接入网站或 App,用统一的属性上报事件,需要时把原始数据导出给别的工具。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie