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

如何提升jq的解析深度限制?解决深层嵌套JSON解析报错

解决jq解析深层嵌套JSON时的深度限制问题

jq默认的递归解析器存在深度限制,且没有官方提供的命令行选项直接调整这个限制——这是因为递归解析过深的JSON容易引发栈溢出。针对你的问题,有两种可行解决方案:

方案1:使用流式解析模式(推荐)

--stream模式是jq专门为处理超大/超深层JSON设计的,它会逐块读取并处理JSON数据,不会将整个结构加载到内存,也不受递归深度限制。执行以下命令即可完成压缩:

jq -c --stream -n 'reduce inputs as $i ({}; setpath($i[0]; $i[1]))' <input.json >minified.json
  • -c:输出压缩后的单行JSON
  • --stream:启用流式解析
  • -n:不读取输入的初始值,配合reduce构建完整JSON结构

方案2:编译自定义版本的jq(不推荐)

如果必须使用常规递归解析模式,只能通过修改jq源代码重新编译来提升深度限制:

  1. 下载jq的源代码,找到src/parser.y文件
  2. 修改文件中的YYMAXDEPTH常量值(默认通常为几千),比如改为100000
  3. 重新编译安装:
    ./configure && make && sudo make install
    

⚠️ 注意:这种方法会大幅提高递归深度,可能导致程序运行时栈溢出崩溃,仅在特殊场景下使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:48:22