如何增加jq的深度限制?

问题描述 投票:0回答:3

当尝试使用

jq
缩小深度嵌套的 JSON 文件(~10k 深)时,出现解析错误:

$ jq -c . <input.json >minified.json
parse error: Exceeds depth limit for parsing at line 227263, column 355

如何增加深度限制?有命令行选项吗?我在手册页中找不到任何有关此内容的信息。

json jq minify
3个回答
3
投票

一种解决方法是使用另一种工具,例如

jj
,它完美地完成了这项工作,而且通常也可能更快,即使
jq
没有错误。

jj -u <input.json >minified.json

二进制文件可在:https://github.com/tidwall/jj/releases/latest或通过自制程序:

brew install tidwall/jj/jj

1
投票

关于 C 实现,您必须在更改 jv_parse.c 中的 MAX_PARSING_DEPTH 后重新制作二进制文件,其中相关行当前为:

#define MAX_PARSING_DEPTH (256)

据我所知,将限制增加到非常大的数字似乎没有任何缺点。


1
投票

gojq(jq 的 Go 实现)对其可以处理的最大深度有限制:大于 1,024 但小于 10,000。

我已经验证了 和我的基于“JSON Machine”的实用程序 jm 都可以处理 10,000 的深度。以下是压缩 JSON 文档的等效方法,至少在不违反限制的情况下是这样:

   jj -u @this < input.json
   jm input.json
© www.soinside.com 2019 - 2024. All rights reserved.