Merge branch 'runarbu-master'
John Napiorkowski [Tue, 5 Dec 2017 15:03:41 +0000 (10:03 -0500)]
lib/Catalyst/Action/Serialize/JSON.pm
lib/Catalyst/Controller/REST.pm

index 9d5f304..e618248 100644 (file)
@@ -20,6 +20,12 @@ sub execute {
     my $self = shift;
     my ( $controller, $c ) = @_;
 
+    if (my $options = $controller->{json_options_encode}) {
+        foreach my $opt (keys %$options) {
+            $self->encoder->$opt( $options->{$opt} );
+        }
+    }
+
     my $stash_key = (
             $controller->{'serialize'} ?
                 $controller->{'serialize'}->{'stash_key'} :
index 3c9ec67..b9c10d0 100644 (file)
@@ -147,11 +147,22 @@ L<JSON::XS> installed.  The C<text/x-json> content type is supported but is
 deprecated and you will receive warnings in your log.
 
 You can also add a hash in your controller config to pass options to the json object.
+There are two options. C<json_options> are used when decoding incoming JSON, and C<json_options_encode> 
+is used when encoding JSON for output.
+
 For instance, to relax permissions when deserializing input, add:
+
   __PACKAGE__->config(
     json_options => { relaxed => 1 }
   )
 
+To indent the JSON output so it becomes more human readable, add:
+
+  __PACKAGE__->config(
+    json_options_encode => { indent => 1 }
+  )
+
+
 =item * C<text/javascript> => C<JSONP>
 
 If a callback=? parameter is passed, this returns javascript in the form of: $callback($serializedJSON);