首页/数据/数据工程与 ETL 速查/JSON 与 NDJSON 行式文本
管道基础52 条

JSON 与 NDJSON 行式文本

JSON 数组需要整体解析、难以流式处理;NDJSON(每行一个 JSON 对象)可以逐行处理与追加,是日志与事件落地的常见形态。

JSON单文档结构,适合接口响应与配置文件
NDJSON按行分隔的多个 JSON 对象,适合流式与追加写
工具jq 处理、Spark/Flink 原生支持解析

jq 常用操作

jq 常用操作
head -1 events.ndjson | jq '.'
jq -c 'select(.level == "ERROR") | {ts, msg}' events.ndjson | head
jq -s 'length' events.ndjson       # 统计行数(会把文件读进内存)
解析 JSON 时字段缺失与类型漂移很常见:先按字符串读入再显式转换,比直接强类型解析更稳。

易错点

  • JSON 数字在部分语言里默认转 double,长整型 ID 会丢精度,解析时用字符串承接
  • 大数组文件用整读方式解析会 OOM,优先 NDJSON 逐行流式处理

数据来源与参考

  • JSON Lines 规范(jsonlines.org)
  • jq 官方手册
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌