1
我有一个Dancer2应用程序,我想使用JSON序列化程序返回一个对象的序列化版本。下面是一个小版本的它:当我尝试使用JSON序列化程序从Dancer2路由返回对象时,为什么会出现“内部服务器错误”?
{
package User;
use Moo;
use Types::Standard qw/Str/;
has name => (is=>'ro',isa =>Str, default => "");
sub TO_JSON { return { %{ shift() } };}
}
use Dancer2;
set serializer => 'JSON';
set engines=>{serializer=>{JSON=>{allow_blessed=>1,convert_blessed=>1}}};
get '/hello/:name' => sub {
my $user = User->new({name=>route_parameters->{name}});
return $user->TO_JSON; ## error if the TO_JSON method is not explicitly called.
};
dance;
1;
如果TO_JSON
方法显式调用,那么很明显的对象返回的哈希裁判,然后序列化为:
{"name":"fred"}
作为一个例子。如果拿到最后一行是
return $user;
,则返回以下错误:
{"title":"Error 500 - Internal Server Error","message":"","status":500,"exception":"Unrecognized response type from route: User.\n"}
我认为设置allow_blessed
和convert_blessed
将处理自动调用TO_JSON
,但是我无法找到有关Dancer2的文档。这是否被丢弃了?