.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Dancer2::Core::Role::Serializer 3pm" .TH Dancer2::Core::Role::Serializer 3pm "2023-12-15" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Dancer2::Core::Role::Serializer \- Role for Serializer engines .SH "VERSION" .IX Header "VERSION" version 1.1.0 .SH "DESCRIPTION" .IX Header "DESCRIPTION" Any class that consumes this role will be able to be used as a serializer under Dancer2. .PP In order to implement this role, the consumer \fBmust\fR implement the methods \f(CW\*(C`serialize\*(C'\fR and \f(CW\*(C`deserialize\*(C'\fR, and should define the \f(CW\*(C`content_type\*(C'\fR attribute value. .SH "ATTRIBUTES" .IX Header "ATTRIBUTES" .SS "content_type" .IX Subsection "content_type" The \fIcontent type\fR of the object after being serialized. For example, a \s-1JSON\s0 serializer would have a \fIapplication/json\fR content type defined. .SH "METHODS" .IX Header "METHODS" .SS "serialize($content, [\e%options])" .IX Subsection "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 \f(CW\*(C`content_type\*(C'\fR attribute. .PP A third optional argument is a hash reference of options to the serializer. .PP The serialize method must return bytes and therefore has to handle any encoding. .SS "deserialize($content, [\e%options])" .IX Subsection "deserialize($content, [%options])" The inverse method of \f(CW\*(C`serialize\*(C'\fR. Receives the serializer class object and a string that should be deserialized. The method should return a reference to the deserialized Perl data structure. .PP A third optional argument is a hash reference of options to the serializer. .PP The deserialize method receives encoded bytes and must therefore handle any decoding required. .SH "CONFIGURATION" .IX Header "CONFIGURATION" The \fBserializer\fR configuration variable tells Dancer2 which engine to use. .PP You can change it either in your config.yml file: .PP .Vb 2 \& #Set JSON engine \& serializer: "JSON" \& \& # Prettify JSON output \& engines: \& serializer: \& JSON: \& pretty: 1 .Ve .PP To know which engines are availables please see \*(L"Serializers\*(R" in Dancer2::Manual .SH "AUTHOR" .IX Header "AUTHOR" Dancer Core Developers .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2023 by Alexis Sukrieh. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.