我正在從JSON的encode_json
以下錯誤(MAX_DEPTH設置得太低?):JSON文本或Perl結構超過最大嵌套級別
JSON文本或Perl結構超過最大嵌套級別(MAX_DEPTH設定得過低? )
的代碼是問題是
my $jsonString = encode_json($dataXML);
$dataXML
被XML ::簡單的生產。任何有關如何消除此錯誤的指針?
我正在從JSON的encode_json
以下錯誤(MAX_DEPTH設置得太低?):JSON文本或Perl結構超過最大嵌套級別
JSON文本或Perl結構超過最大嵌套級別(MAX_DEPTH設定得過低? )
的代碼是問題是
my $jsonString = encode_json($dataXML);
$dataXML
被XML ::簡單的生產。任何有關如何消除此錯誤的指針?
當結構有512層嵌套時,您從JSON :: PP中得到該錯誤。這可能意味着要捕獲非序列化的參考循環(my $data = { }; $data->{foo} = $data;
),並防止惡意嘗試耗盡所有內存。
如果這些不是你的問題,如果問題只是你需要支持ginormous結構,你可以使用->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就可以避免這個錯誤。這是加速你的編碼和解碼。
我已經添加了最大深度爲2048的行my $ json = JSON-> new-> utf8-> max_depth(2048); – user1188611 2015-04-01 17:46:53
有關於此的任何指針? – user1188611 2015-04-01 17:47:03
即使在將最大深度設置爲5000之後,nope也會出現相同的錯誤,那麼會導致崩潰。失敗的案例和非失敗的案例之間的唯一區別只是一個額外的標記,不知道它是如何創造這麼多的差異 – user1188611 2015-04-01 17:52:27
創建以顯示錯誤的位置。這是一個複雜業務代碼的虛擬樣本。 – user1188611 2015-04-01 17:34:51
不要這樣做。錯誤的代碼比部分代碼差。 – ikegami 2015-04-01 17:36:43
噢好吧,但你已經理解錯誤在這裏吧? – user1188611 2015-04-01 17:37:18