json 如何增加jq的深度限制?

fgw7neuy  于 2023-03-04  发布在  其他
关注(0)|答案(3)|浏览(139)

当我尝试使用jq缩小一个深度嵌套的JSON文件(~ 10 k深)时,我得到了一个解析错误:

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

我怎样才能增加深度限制?有命令行选项吗?我在手册页中找不到任何关于这个的信息。

nukf8bse

nukf8bse1#

解决方法是使用另一个工具,例如jj,它可以完美地完成这项工作,而且通常可能更快,即使jq没有错误。

jj -u <input.json >minified.json

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

brew install tidwall/jj/jj
rkue9o1l

rkue9o1l2#

gojq(jq在Go语言中的实现)在处理的最大深度上有一个限制:它大于1,024但小于10000。
我已经验证了jj和我的基于“JSON机器”的实用程序jm都可以处理10,000的深度。下面是压缩JSON文档的等效方法,至少在不超过限制的情况下是这样:

jj -u @this < input.json
   jm input.json
axr492tv

axr492tv3#

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

#define MAX_PARSING_DEPTH (256)

据我所知,将上限提高到一个非常大的数字似乎没有任何不利因素。

相关问题