NDJSON 验证器 — 验证换行分隔的 JSON
验证 Newline-Delimited JSON(JSON Lines)文件。检测格式错误的行、BOM、空条目和混合格式 —— 全在浏览器中完成,无需上传。
NDJSON Validator
Validate Newline-Delimited JSON (JSON Lines). Validates each line as JSON and reports errors. Works entirely in your browser.
NDJSON —— newline-delimited JSON,也叫 JSON Lines —— 是 2013 年以来驱动每一条流式数据管道、每一个日志聚合器和每一个批处理工作流的数据格式。它就是带一条规则的 JSON:每一行都是一个完整的、可独立解析的 JSON 对象。正是这条规则让它成为流式场景的理想格式,因为消费者不必先解析前 N-1 行就能直接读取第 N 行,可以从崩溃后的任意一行继续,也可以简单地按换行符把文件切分到多个 worker。代价是,在一个百万行的文件里,只要出现一行格式错误的内容,最先撞上它的下游消费者就会被卡住。
验证器的职责就是在数据进入生产环境之前找到那一行。NDJSON 的一行格式错误可以有很多种形式 —— 从少写了一个右花括号,到拼接脚本因为没正确处理编码而引入的杂散 Unicode 字符。验证器会逐行扫描,给出每一处非法条目的精确行号、字节偏移和解析错误。它还会捕获那些不是解析失败但同样危险的「静默错误」:本不该出现的空行、让文件膨胀的尾部空白、以及在拼接后幸存的 UTF-8 BOM 字节。
验证器真正的价值并不在于找到第一个错误 —— 任何 JSON 解析器都能做到这一点。它的价值在于:验证器在遇到错误后会继续扫描,在一次扫描中报告所有问题。一个含三处断点的百万行 NDJSON 文件,用本工具一轮就能修好,而「遇错即停」的验证器则需要三轮。对于那些从第三方 API、日志采集器或跨团队数据管道接入 NDJSON 的团队来说,这种「单次扫描」的行为意味着一次快速修复和一场横跨数小时的调试之间的差别。
使用方法
粘贴或拖入 NDJSON 文件
把 .ndjson 或 .jsonl 文件拖入输入区,或粘贴 NDJSON 文本。验证器会逐行扫描,报告哪些行是合法 JSON、哪些行格式错误、哪些行为空。
查看逐行报告
每一行都有一个状态徽标:合法(绿色)、非法 JSON(红色,并附解析错误信息)、空行(灰色)、注释行(蓝色,当首个非空白字符是 # 时)。点击红色行可跳转到源文件中的对应位置。
筛选出合法行
筛选视图只显示合法 JSON 行。可以复制到剪贴板,或下载为已清理的 .ndjson 文件。非法行被剥离,把一条凌乱的数据流整理成干净的流。
常见问题
NDJSON 中什么样的行算作空行?
只包含空白字符的行被视为空行,并被单独标记,与格式错误的行区分开。文件末尾的尾部换行不算空行。你还可以配置空行应该作为警告还是错误来处理。
它会检测跨行的重复对象吗?
不会 —— 验证器检查的是逐行的 JSON 合法性,而不是行间的语义一致性。两段相同的 JSON 对象放在不同行里都会被判为合法。如果需要语义层面的去重,请把输出再过一次去重工具。
它如何处理文件开头的 UTF-8 BOM?
位于零号位置的字节顺序标记(EF BB BF)在解析第一行之前会被静默剥离。如果 BOM 出现在流的中间(在拼接的 NDJSON 中虽然少见但确实可能),包含它的那一行会被标记为非法。可以打开「剥离所有 BOM」选项来处理拼接文件。
能用 JSON Schema 来校验吗?
验证器本身不支持 —— 但你可以把它和 JSON Schema 生成器配合使用。从一份合法的 NDJSON 样本生成一份 schema,再把 schema 应用到后续文件上。验证器专注于语法层面的合法性,schema 校验是另一步。
NDJSON 和 JSON Lines 有什么区别?
它们是同一种格式。NDJSON(.ndjson)和 JSON Lines(.jsonl)都定义了一种换行分隔的 JSON 对象流,每一行都可以独立解析。这两个术语可以互换使用;本工具两种扩展名都接受。
限制说明
- 对超大文件不做流式处理验证器会把整个文件加载到浏览器内存中。对于超过标签页内存上限的文件,请先用命令行工具把文件切分,然后分别校验每个分片。
- 只支持逐行校验,不支持多行 JSON 对象NDJSON 要求每个 JSON 对象恰好占一行。把单个逻辑条目写成多行 JSON 不是合法的 NDJSON,会在第一个换行处被判为格式错误。
- 不做语义层面的字段级校验验证器只确认第 N 行是合法 JSON。它不会检查字段或类型是否符合某份 schema,也不会检查值是否落在预期范围内。这是下游校验步骤要做的事情。
平台说明
- macOS
- 命令行校验方式是 `cat file.ndjson | jq empty`,它会逐行校验。浏览器工具的额外价值是带行号的错误报告和「一键筛选合法行」功能 —— 这些 CLI 工具没有暴露。
- Linux
- Python 的 `jsonlines-validate` 包在命令行里做同样的事情。浏览器工具适合从聊天或邮件里粘贴出来的 NDJSON 做交互式检查。
- Web
- 完全在客户端运行,加载完成后离线可用。