NDJSON(Newline Delimited JSON,又名 JSONL / JSON Lines)是一种每行一条独立 JSON 对象的文本格式,行与行之间用 \n 分隔。它没有外层 []、对象之间也没有逗号,因此可以边写边读、边追加边处理——日志系统、流式接口、Kafka / 数仓导出几乎都用这种格式。本工具支持 NDJSON / JSONL ↔ JSON 数组 ↔ CSV 三方互转,自带错误行号定位和字段集合统计。
| 格式 | 长什么样 | 适合场景 |
|---|---|---|
| NDJSON / JSONL | 每行一条 JSON {"id":1}\n{"id":2} | 日志 / 流式 / 大文件追加 |
| JSON 数组 | 整体一个数组 [{"id":1},{"id":2}] | 接口返回 / 配置文件 |
| CSV | 表头 + 行 id\n1\n2 | Excel / 非技术同事 |
NDJSON 文件常以 .ndjson 或 .jsonl 为后缀,本工具拖入文件时自动识别。
JSON 数组要求整个文件是一个合法 JSON——必须读到 ] 才能解析、追加新记录得反序列化整个数组重新写出、坏掉一个字符整个文件就废了。NDJSON 把这三个限制全部解掉:
>> 追加新行就行,不需要重写代价是它整体不是合法 JSON,标准 JSON.parse 不能直接吃,必须按行处理——也正是本工具要解决的问题。
“跳过并报告”模式下,工具按输入文本里的物理行号(1-based)汇报每个错误行:
\n 视为多行,按 JSON 解析失败处理\r\n(Windows 换行)自动归一)自动剥掉错误列表展示前 50 条,每条带消息预览。如果坏行率高,建议切到首错停止模式定位最早的格式问题。
jq -c 或 Python 脚本处理jq -c . 规整成单行前三个是,最后一个不是。NDJSON(Newline Delimited JSON)、JSONL(JSON Lines) 和 LDJSON(Line Delimited JSON) 是同一种格式的三个名字——每行一条独立、合法的 JSON,行之间用 \n 分隔,没有外层数组。application/ld+json 是另一回事,全称 *JSON-LD*(JSON for Linked Data),用来描述结构化数据(Schema.org),跟 NDJSON 没关系。本工具支持前三种,文件名 .ndjson / .jsonl 自动识别。
NDJSON 整体不是合法 JSON——多个对象之间没有逗号、外层没有 [],JSON.parse 会在第二行立刻报 Unexpected token。NDJSON 必须按行拆分后逐行解析。这正是它的设计目的:日志、流式接口、Kafka/数仓导出场景下可以边写边读、边追加边处理,不需要把所有数据读完才能解析;坏掉一行也只丢这一行,不会让后续记录全部失效。
user.name)怎么处理?默认 a.b 扁平化:{"user":{"name":"Alice"}} 会变成 CSV 的 user.name 列,值 Alice。数组若全是基础类型(数字/字符串)会用 | 拼接(tags=core|ops);如果数组里是对象或字典,整段当作 JSON 字符串塞进单元格。也可以切到"嵌套处理 = JSON 字符串",所有非标量值统一序列化为 JSON 字符串列。反向(CSV → NDJSON)会按 a.b 把扁平列还原成嵌套对象,圆环往返不丢结构。
调试线上日志、抓包导出选"跳过并报告"——上游可能混入半截 JSON、字段越界、编码异常,这模式会把所有坏行收集起来列出行号 + 预览,让你定位到底是第几行、什么内容坏了,其余记录正常解析转换。做数据迁移、ETL 校验选"首错停止"——要求源数据严格合法时,遇到第一处错误立即抛错,避免静默丢数据让下游误以为全量成功。错误行号按输入文本里的实际物理行号计算,空行被跳过但不打乱编号。
NDJSON 有唯一一种合法布局:每条独立 JSON 占一整行,行内不能含未转义的 \n,行之间靠 \n 分隔。"Concatenated JSON"(也叫 JSON Stream / record-jsonseq RFC 7464)是更宽松的家族——多个 JSON 对象直接拼接、可跨行、可有空白,依靠括号配对识别边界,需要状态机解析器。本工具只支持 NDJSON,遇到一行内有多个对象、或一个对象跨多行的"流式 JSON"会按错行处理。如果数据是这类格式,先用 jq -c . 之类工具规整成单行再来。
不会。所有解析、转换、错误检测都在浏览器本地完成,不发起任何网络请求,可断网使用。文件大小上限 5 MB 是为了防止页面卡顿;更大的文件建议用命令行 jq -c 或脚本处理。复制 / 下载结果也只走本地剪贴板和 Blob 下载链接。