NDJSON 格式化与验证工具
指导
NDJSON 格式化与验证工具
请将newline-delimited JSON(NDJSON / JSON Lines)文档粘贴到输入框中,或使用上传器上传文件,一次性检查每个记录。每行独立解析,因此一个损坏的记录不会隐藏其他记录。该工具会报告有效和无效行数、最常见的顶层键以及任何解析失败行的精确错误信息——非常适合日志流、BigQuery导出和Elasticsearch批量数据。
如何使用
- 请将您的NDJSON内容粘贴到输入框中,或使用上传器上传
.ndjson/.jsonl/.txt文件。 - 选择一个格式模式: 紧凑 保持每行一个记录(真正的NDJSON),或 美化 将每个记录重写为带缩进和空行分隔符的格式。
- 切换 跳过空行 如果您的数据包含多余的空行并希望删除它们,以及 排序对象键 以实现可重复的差异和稳定的哈希值。
- 查看统计面板中的总行数、有效行数、无效行数以及每行错误信息,然后复制或下载格式化输出。
特征
- 逐行验证 ——每行独立解析,并显示精确的JavaScript JSON.parse错误信息和原始行号。
- 紧凑和美化模式 ——根据需要在严格的一行一个记录NDJSON和人类可读的多行格式之间切换。
- 顶层键分布 ——查看在有效记录中最常见的顶层字段,有助于临时发现模式。
- 排序键 ——深度排序对象键,以实现可重复的差异和稳定的哈希值。
- 空行处理 ——统计并可选地移除日志流中某些工具插入的空行。
- 文件和剪贴板友好 ——可上传大文件,将清理后的输出复制到剪贴板,或下载为可直接管道的NDJSON文件。
- 完全在浏览器中运行 ——不会上传任何内容;该工具对敏感日志数据和导出是安全的。
何时使用NDJSON
NDJSON是流式JSON的行业标准格式:Docker和Kubernetes容器日志、Elasticsearch _bulk 体、BigQuery导出、OpenAI批量作业和Loki数据摄入均使用每行一个独立的JSON对象。标准JSON格式器在遇到第一个换行符时就会崩溃,而本工具正是为此类格式专门设计的。
常问问题
-
JSON与NDJSON的区别是什么?
标准JSON每个文档编码一个值(对象、数组、数字、字符串、布尔值或null)。NDJSON(也称为JSON Lines或LDJSON)每行编码一个独立的JSON值,用换行符分隔。NDJSON是可流式处理的:解析器可以逐行处理记录而无需将整个文件加载到内存中,因此它在日志管道和批量API中占据主导地位。
-
为什么NDJSON记录不允许包含未转义的换行符?
换行符是NDJSON中的记录分隔符,因此值中的任何未转义换行符都会将一个记录分割成两个。该格式要求JSON编码器为每个记录生成紧凑表示,嵌入的换行符必须写为转义序列“\n”。因此,美化后的JSON(带缩进的多行对象)不是有效的NDJSON。
-
NDJSON是否与JSON Lines和LDJSON相同?
实际上,是的。NDJSON(newline-delimited JSON)、JSON Lines(jsonlines.org)和LDJSON(line-delimited JSON)都描述了相同的约定:每行一个JSON值,用U+000A换行符分隔。在是否容忍尾随空白、UTF-8 BOM或回车换行符等细节上存在细微差异,但所有值得使用的解析器都接受简单的LF分隔记录。
-
逐行验证与整体文档验证有何不同?
使用普通JSON解析器时,第一个语法错误会终止整个解析过程,并掩盖后续问题。逐行验证为每行运行独立解析器,因此每个记录要么成功,要么显示其自身的错误信息和行号。这可以隔离损坏的记录,允许您继续导入有效记录,并使比较生产者变更的差异更加容易。
-
NDJSON应使用什么MIME类型和文件扩展名?
NDJSON的IANA注册媒体类型是application/x-ndjson,application/jsonl也被广泛接受。常用的文件扩展名是.ndjson和.jsonl。使用.json作为换行分隔文件的扩展名在技术上是错误的,并会破坏那些根据扩展名自动检测格式的工具。
