You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解析超大JSON文件并将object_array对象输出到独立文件

处理超大JSON:提取object_array中每个对象到独立文件

问题场景

拥有体积可达40GB+的JSON文件,结构包含顶层object_array数组,需将数组内的每个完整对象单独保存到独立文件。此前尝试的命令:

jq -cn --stream 'fromstream(1|truncate_stream(inputs))' test.json| awk '{print > "onif00" NR ".json"}'

存在稳定性问题:要么所有数据写入单个文件,要么生成大量仅含[、{等零碎符号的无效文件。

解决方案

使用精准过滤的jq流式处理命令,配合awk实现按对象拆分文件:

jq -cn --stream '
  fromstream(
    inputs
    | select(.[0][0] == "object_array" and (.[0] | length) == 2)
    | .[0] |= .[1:]
  )' test.json | awk '{print > sprintf("onif%03d.json", NR)}'

命令说明

  1. --stream:启用流式处理,无需加载整个超大文件到内存,适配40GB+级别的JSON文件
  2. 路径过滤:select(.[0][0] == "object_array" and (.[0] | length) == 2)仅保留object_array数组直接子元素的流数据,过滤掉顶层其他字段及对象内部嵌套结构的多余路径,确保只处理目标对象
  3. 路径调整:.[0] |= .[1:]将路径从["object_array", 索引, 子字段]调整为[子字段],让fromstream能正确组装出完整的独立对象
  4. awk拆分:sprintf("onif%03d.json", NR)生成按顺序编号的文件名(如onif001.json、onif002.json),每个对象对应一行输出,精准写入独立文件

注意事项

  • 确保jq版本≥1.6,旧版本流式处理功能存在兼容性问题
  • 处理超大文件时,优先保证磁盘IO充足,避免同时运行高IO负载程序
  • 若需要格式化输出的JSON文件,可后续对单个文件执行jq . filename.json重新格式化

内容的提问来源于stack exchange,提问作者sword_of_omens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 10:45:37