我从JSON' encode_json
json text或perl结构超出最大嵌套级别(max_depth设置得太低?)
代码有问题
my $jsonString = encode_json($dataXML);
$dataXML
由XML :: Simple' s XMLin
生成。有关如何删除此错误的任何指示?
答案 0 :(得分:2)
当结构具有512个嵌套级别时,您从JSON :: PP获得该错误。它可能意味着捕获不可序列化的引用循环(my $data = { }; $data->{foo} = $data;
)并防止恶意企图耗尽所有内存。
如果这些不是你的问题,如果问题只是你需要支持巨大的结构,你可以使用->max_depth
来提高阈值。请记住
encode_json($data)
是
的缩写my $json = JSON->new->utf8;
$json->encode($data)
所以你可以使用
my $json = JSON->new->utf8->max_depth(...);
$json->encode($data)
或者,JSON :: XS可能没有该检查。如果它没有,只需安装JSON :: XS就可以避免错误。这是加速编码和解码的最重要因素。