X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Action-REST.git;a=blobdiff_plain;f=lib%2FCatalyst%2FAction%2FSerialize%2FJSON.pm;h=764ba5ffd029e135b653e2d36ac9226da649421d;hp=efd45c915cca043cd34e8972e3c34615c9fa367f;hb=3bb36dcaabf34fef5c15b1bb74c5eb198a7f5168;hpb=f465980c3c25b475d878716b7341d0a4f5c8f823 diff --git a/lib/Catalyst/Action/Serialize/JSON.pm b/lib/Catalyst/Action/Serialize/JSON.pm index efd45c9..764ba5f 100644 --- a/lib/Catalyst/Action/Serialize/JSON.pm +++ b/lib/Catalyst/Action/Serialize/JSON.pm @@ -4,11 +4,21 @@ use Moose; use namespace::autoclean; extends 'Catalyst::Action'; -use JSON qw(encode_json); +use JSON (); -our $VERSION = '0.81'; +our $VERSION = '0.82'; $VERSION = eval $VERSION; +has encoder => ( + is => 'ro', + lazy_build => 1, +); + +sub _build_encoder { + my $self = shift; + return JSON->new->utf8->convert_blessed; +} + sub execute { my $self = shift; my ( $controller, $c ) = @_; @@ -16,7 +26,7 @@ sub execute { my $stash_key = ( $controller->{'serialize'} ? $controller->{'serialize'}->{'stash_key'} : - $controller->{'stash_key'} + $controller->{'stash_key'} ) || 'rest'; my $output = $self->serialize( $c->stash->{$stash_key} ); $c->response->output( $output ); @@ -25,7 +35,8 @@ sub execute { sub serialize { my $self = shift; - encode_json( shift ); + my $data = shift; + $self->encoder->encode( $data ); } 1;