JSON serializer를 사용하여 객체의 직렬화 된 버전을 반환하려는 Dancer2 응용 프로그램이 있습니다. TO_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;
, 다음 분명히 객체의 해시 심판으로 반환 다음으로 직렬화 :
{"name":"fred"}
예를 들어 여기의 작은 버전입니다. 는 GET의 마지막 행 다음에 다음 오류가 반환됩니다
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에 대한 문서. 이게 떨어 뜨린 것입니까?