json.pm 592 B

12345678910111213141516171819202122232425262728293031
  1. package Trog::Renderer::json;
  2. use 5.040;
  3. use re '/aasx';
  4. use warnings FATAL => 'all';
  5. use JSON::MaybeXS;
  6. =head1 Trog::Renderer::json
  7. Render JSON. Rather than be templated, we just run the input thru the encoder.
  8. =cut
  9. sub render (%options) {
  10. my $code = delete $options{code} // 200;
  11. my $headers = delete $options{headers} // {};
  12. my %h = (
  13. 'Content-type' => "application/json",
  14. %$headers,
  15. );
  16. delete $options{contenttype};
  17. delete $options{template};
  18. my $body = encode_json( $options{data} );
  19. return [ $code, [%h], [$body] ];
  20. }
  21. 1;