Help language development. Donate to The Perl Foundation

Cro::HTTP::BodySerializerJSONClass zef:jonathanstowe last updated on 2022-08-08
# Cro::HTTP::BodySerializerJSONClass

A Cro::HTTP::BodySerializer that knows about JSON::Class objects

![Build Status](

## Synopsis

use Cro::HTTP::Router;
use Cro::HTTP::Server;
use JSON::Class;
use Cro::HTTP::BodySerializerJSONClass;

class Foo does JSON::Class {
   has DateTime $.date is marshalled-by('Str') =;

my $app = route {
    get -> {
        content 'application/json',;

my Cro::Service $service =
   host                 => 'localhost', 
   port                 => 7798,
   application          => $app, 
   add-body-serializers => [ Cro::HTTP::BodySerializerJSONClass]


react whenever signal(SIGINT) { $service.stop; exit; }


## Description

This provides a body serializer for `Cro::HTTP` that allows you to pass an object that does `JSON::Class` as an `application/json`
response body.  It simply needs to be added to the body serializers with the `add-body-serializers` parameter to the constructor
of the `Cro::HTTP::Server`.  Similarly it can be used to serialize a request body  of a `Cro::HTTP::Client` if the `add-body-serializers`
is provided to the constructor of `Cro::HTTP::Client`.

It might simplify programme design by using, for example, existing objects as the response to a web request.

## Installation

Assuming you have a working Rakudo installation you should be able to install this with *zef* :

    zef install Cro::HTTP::BodySerializerJSONClass

## Support

Please feel free to post suggestions/patches/etc at [Github](

## Licence & Copyright

This library is free software.  Please see the [LICENCE](LICENCE) file in the distribution.

© Jonathan Stowe 2021