我在我的Dancer应用程序中使用了一个CHI接口来memcached(或者在开发中的文件),但是当我缓存一个对象时,我在序列化程序中遇到错误。我在舞者配置中有以下内容:
engines:
JSON:
allow_blessed: 1
convert_blessed: 1
我还需要什么?
Error message:
Error while loading bin/app.pl: encountered object 'C3M::CMF=HASH(0x3ef8aa8)', but neither allow_blessed nor convert_blessed settings are enabled at /usr/lib/perl5/site_perl/5.10/CHI/Serializer/JSON.pm line 19.
答案 0 :(得分:0)
CHI :: Serializer :: JSON不使用与Dancer :: Serializer :: JSON相同的序列化程序。 Dancer :: Serializer :: JSON在config.yml中使用设置('engines'),但是没有办法向CHI :: Serializer :: JSON发送配置选项。
解决方法:
use CHI::Serializer::JSON;
my $JSON = JSON->new->utf8->canonical;
$JSON->allow_blessed(1);
$JSON->convert_blessed(1);
*CHI::Serializer::JSON::serialize = sub { $JSON->encode( $_[1] ) };
*CHI::Serializer::JSON::deserialize = sub { $JSON->decode( $_[1] ) };