跳到正文

JSON Lines 转换

JSON Lines Converter

在 NDJSON 和 JSON 数组之间互转,解析不了的行不会中止转换,而是按行号列出来。

把 JSON 数组转成 JSON Lines——一行一条记录,日志管道和 BigQuery 要的格式——再转回来。它也能读没有任何分隔符的 JSON 值流,几个日志库会输出这种东西,而 `JSON.parse` 直接拒收。

🔒 完全在你的浏览器里运行jsonlndjsonconvertstream
转换

输入

拖入 .json、.jsonl 或 .ndjson 文件

在这个标签页里读取,不上传。

一个 JSON 数组,或者干脆没有分隔符的一串值——后者正是有几个日志库会输出的样子,也是 `JSON.parse` 会拒绝的样子。

输出

预览

把前面几条记录列成表。
tslevelmsgms
2025-08-27T09:00:00Zinfostarted12
2025-08-27T09:00:04Zwarnslow query2100
2025-08-27T09:00:09Zerrorupstream 502

前 200 条记录里所有键的并集。

记录

3

输入

246 B

输出

209 B

怎么用

  1. 选方向

    要喂给流式处理的东西时,数组转行;手上有一个日志文件、想把它当一份文档处理时,行转数组。

  2. 把文件拖进来

    `.json`、`.jsonl` 和 `.ndjson` 都接受——NDJSON 和 JSON Lines 是同一种格式的两个名字。

  3. 检查没能解析的行

    一行坏了不会中止转换。它会按行号连同失败的文本列出来,通常是轮转日志末尾被截断的一条记录。

  4. 用预览看形状

    表格显示前两百条记录里每条记录键的并集,这是发现一半日志行有一个别的行没有的字段最快的办法。

常见问题

JSON Lines 和 NDJSON 有什么区别?

没有要紧的区别。同一个约定的两个名字——一行一个 JSON 值,换行分隔,外面不套数组。有的工具用这个扩展名,有的用那个,这里两种都读。

能处理几个 GB 的日志文件吗?

不能。整个文件读进标签页,在内存里转换,再作为第二个字符串保存。几十 MB 是实际的上限;超过这个,命令行上的 `jq -c` 才是对的工具,它会流式处理。

为什么要给键排序?

因为 JSON Lines 通常是用 `diff` 比较的,而 `diff` 是逐行比较。同一份数据两次导出、键顺序不同,就是完全不同的两行。排序让它们成为相同的文本。

嵌套对象会怎样?

保持嵌套——JSON Lines 的一条记录是一个完整的 JSON 值,所以嵌套没问题,什么都不会被拍平。如果你想从里面拿出列来,JSON 转 CSV 工具才是拍平的那个。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。