json text或perl结构超出最大嵌套级别(max_depth设置得太低?)

时间:2015-04-01 17:28:36

标签: xml json perl

我从JSON' encode_json

收到以下错误
  

json text或perl结构超出最大嵌套级别(max_depth设置得太低?)

代码有问题

my $jsonString = encode_json($dataXML);

$dataXML由XML :: Simple' s XMLin生成。有关如何删除此错误的任何指示?

1 个答案:

答案 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就可以避免错误。这是加速编码和解码的最重要因素。