fix json to encode_blessed
Arthur Axel 'fREW' Schmidt [Fri, 22 Jan 2010 23:53:25 +0000 (17:53 -0600)]
lib/Catalyst/Action/Serialize/JSON.pm
lib/Catalyst/Action/Serialize/JSON/XS.pm

index efd45c9..6ea0a4b 100644 (file)
@@ -4,11 +4,21 @@ use Moose;
 use namespace::autoclean;
 
 extends 'Catalyst::Action';
-use JSON qw(encode_json);
+use JSON ();
 
 our $VERSION = '0.81';
 $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;
index 4e7ab1c..a22bd54 100644 (file)
@@ -4,14 +4,14 @@ use Moose;
 use namespace::autoclean;
 
 extends 'Catalyst::Action::Serialize::JSON';
-use JSON::XS qw(encode_json);
+use JSON::XS ();
 
 our $VERSION = '0.81';
 $VERSION = eval $VERSION;
 
-sub serialize {
-    my $self = shift;
-    encode_json( shift );
+sub _build_encoder {
+   my $self = shift;
+   return JSON::XS->new->convert_blessed;
 }
 
 1;