NAME

Dancer2::Serializer::JsonApi

VERSION

version 0.0.1

SYNOPSIS

As part of a Dancer2 App:

# in config.yaml

serializer: JsonApi  

As a standalone module:

use Dancer2::Serializer::JsonApi;
use Dancer2::Plugin::JsonApi::Registry;

my $registry = Dancer2::Plugin::JsonApi::Registry->new;

$registry->add_type( 'spaceship' => {
    relationships => {
        crew => { type => 'person' }
    }
} );

$registry->add_type( 'person' );

my $serializer = Dancer2::Serializer::JsonApi->new( 
    registry => $registry 
);

my $serialized = $serializer->serialize([ 
    'spaceship', {
        id => 1,
        name => 'Unrequited Retribution',
        crew => [
            { id => 2, name => 'One-eye Flanagan', species => 'human' },
            { id => 3, name => 'Flabgor', species => 'Moisterian' },
        ]
    }
]);

DESCRIPTION

Serializer for JSON:API. Takes in a data structure, munge it to conforms to the JSON:API format (potentially based on a provided registry of JSON:API schemas), and encode it as JSON.

Note that using Dancer2::Plugin::JsonApi in an app will automatically set Dancer2::Serializer::JsonApi as its serializer if it's not already defined.

ATTRIBUTES

content_type

Returns the content type used by the serializer, which is application/vnd.api+json;

registry

The Dancer2::Plugin::JsonApi::Registry to use.

json_serializer

The underlying JSON serializer. Defaults to Dancer2::Serializer::JSON.

METHODS

$self->serialize( [ $type, $data, $xtra ])

Serializes the $data using the $type from the registry. The returned value will be a JSON string.

$self->deserialize( $json_string )

Takes in the serialized $json_string and recreate data out of it.

AUTHOR

Yanick Champoux <yanick@babyl.ca>

COPYRIGHT AND LICENSE

This software is copyright (c) 2023 by Yanick Champoux.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.