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

如何用jq或现成工具拆分大型JSON数组文件为多个有效JSON文件?

用jq或Python拆分大型JSON数组为多个独立JSON文件

当然可以!不管是用jq这种专业JSON处理工具,还是写个简单的Python脚本,都能轻松搞定把大型数组式JSON拆分成单个对象JSON文件的需求。下面给你具体的实现方案:

方法一:使用jq(推荐,适合命令行场景)

jq是处理JSON的瑞士军刀,针对你的需求,我们可以结合bash循环来批量生成文件:

基础实现(按顺序编号)

假设你的原始JSON文件名为large_data.json,执行以下bash命令:

count=1
jq -c '.[]' large_data.json | while read -r single_obj; do
  echo "$single_obj" > "output_$(printf "%03d" $count).json"
  ((count++))
done

命令解释:

  • jq -c '.[]' large_data.json:把原始JSON数组中的每个对象单独提取出来,用紧凑格式(一行一个JSON对象)输出
  • while read -r single_obj:逐行读取jq输出的每个对象
  • printf "%03d" $count:生成001、002这种三位数字的编号,确保文件名按顺序排序时不会出现1、10、2这种混乱
  • echo "$single_obj" > ...:把单个JSON对象写入对应编号的文件

进阶:直接用jq内置函数(无需bash循环)

如果你使用的是jq 1.6及以上版本,可以直接用jq的save()函数完成文件写入,省去bash循环:

jq -n '
  input[] |
  ("./output_\(input_line_number).json") as $file_path |
  . | save($file_path)
' large_data.json

这个命令会自动为每个数组元素生成带行号的文件,比如output_1.json、output_2.json。

方法二:使用Python脚本(适合需要格式化输出或自定义逻辑的场景)

如果你更熟悉Python,写个简短的脚本也能轻松实现,还能给输出的JSON加缩进,更易读:

import json

# 读取原始大型JSON文件
with open("large_data.json", "r", encoding="utf-8") as input_file:
    data_array = json.load(input_file)

# 遍历数组,逐个保存为独立文件
for index, obj in enumerate(data_array, start=1):
    output_filename = f"output_{index:03d}.json"
    with open(output_filename, "w", encoding="utf-8") as output_file:
        # indent=2 让JSON格式化输出,去掉的话就是紧凑格式
        json.dump(obj, output_file, indent=2, ensure_ascii=False)

执行这个脚本后,每个数组对象都会被保存为output_001.json、output_002.json这类文件,且格式工整。

注意事项

  • 如果你的JSON对象包含特殊字符或换行符,建议优先用jq的紧凑输出模式(-c参数)或Python脚本,避免解析错误
  • 处理超大文件时,jq的流式处理能有效降低内存占用,比一次性加载整个JSON到内存的方法更高效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:59:39