---
name: "Dancer2::Core::Role::Serializer"
section: "3pm"
platform: "linux"
package: "libdancer2-perl"
version: "1.1.2+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Dancer2::Core::Role::Serializer"
---

# Dancer2::Core::Role::Serializer(3pm)

Role for Serializer engines

## NAME

Dancer2::Core::Role::Serializer - Role for Serializer engines

## VERSION

version 1.1.2

## DESCRIPTION

Any class that consumes this role will be able to be used as a serializer under Dancer2.

In order to implement this role, the consumer **must** implement the methods `"serialize"` and `"deserialize"`, and should define the `"content_type"` attribute value.

## ATTRIBUTES

### content\_type

The *content type* of the object after being serialized. For example, a JSON serializer would have a *application/json* content type defined.

## METHODS

### serialize($content, \[\\%options\])

The serialize method need to be implemented by the consumer. It receives the serializer class object and a reference to the object to be serialized. Should return the object after being serialized, in the content type defined by the `"content_type"` attribute.

A third optional argument is a hash reference of options to the serializer.

The serialize method must return bytes and therefore has to handle any encoding.

### deserialize($content, \[\\%options\])

The inverse method of `"serialize"`. Receives the serializer class object and a string that should be deserialized. The method should return a reference to the deserialized Perl data structure.

A third optional argument is a hash reference of options to the serializer.

The deserialize method receives encoded bytes and must therefore handle any decoding required.

## CONFIGURATION

The **serializer** configuration variable tells Dancer2 which engine to use.

You can change it either in your config.yml file:

```
    #Set JSON engine
    serializer: "JSON"
    # Prettify JSON output
    engines:
      serializer:
        JSON:
          pretty: 1
```

To know which engines are availables please see "Serializers" in Dancer2::Manual

## AUTHOR

Dancer Core Developers

## COPYRIGHT AND LICENSE

This software is copyright (c) 2024 by Alexis Sukrieh.

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