最近我注意到一个包含decode_json()和encode_json()的旧代码,例如:
encode_json({});
过去运行良好,现在崩溃了错误:
预期hash-或arrayref(不是简单的标量,使用allow_nonref来允许)
allow_nonref()
确实有帮助,这很好用:
$json = JSON->new;
$json->allow_nonref;
$json->encode({});
是否有人知道另一种解决问题的方法,因此您不必在使用这些功能的每个地方重写代码?
实际上我创建了测试脚本:
#!/usr/bin/perl
use JSON;
use Data::Dumper;
encode_json({});
它运行良好,没有错误,但在生产中类似的代码会导致错误。 我不知道如何在测试脚本上重现问题,但我希望有人遇到同样的问题,并且知道解决方案。