NAME
CTK::Serializer - Base class for serialization perl structures
VERSION
Version 1.01
SYNOPSIS
use
CTK::Serializer;
my
$sr
= CTK::Serializer->new( DEFAULT_FORMAT,
attrs
=> {
xml
=> [
{
# For serialize
RootName
=>
"request"
,
},
{
# For deserialize
ForceArray
=> 1,
ForceContent
=> 1,
}
],
json
=> [
{
# For serialize
utf8
=> 0,
pretty
=> 1,
allow_nonref
=> 1,
allow_blessed
=> 1,
},
{
# For deserialize
utf8
=> 0,
allow_nonref
=> 1,
allow_blessed
=> 1,
},
],
},
);
my
$doc
=
$sr
->serialize(
xml
=> {
foo
=> 1,
bar
=> 2}, {
RootName
=>
"request"
,
});
my
$doc
=
$sr
->document;
my
$perl
=
$sr
->deserialize(
xml
=>
$doc
, {
ForceArray
=> 1,
ForceContent
=> 1,
});
my
$perl
=
$sr
->struct;
my
$status
=
$sr
->status;
# 0 - Error, 1 - Ok
my
$error
=
$sr
->error;
my
$MIME_type
=
$sr
->content_type;
DESCRIPTION
This module provides access to serialization mechanism with support extending. Now allowed to use follows formats of serialization in this base class: XML, YAML, JSON and "none" for automatic format detecting
new
my
$sr
= CTK::Serializer->new(
$format
);
If specified $format in constructor call then this format sets as default
my
$sr
= CTK::Serializer->new(
$format
,
attrs
=> {
format
=> [
{...serialize attr...},
# for serialize
{...deserialize attr...},
# for deserialize
],
},
);
If an attribute is specified, the passed values are substituted for the call attributes of the corresponding serializer and deserializer
Supported formats:
XML
-
XML serialization via XML::Simple module
JSON
-
JSON serialization via JSON (JSON::XS if installed) module
YAML
-
YAML serialization via YAML::XS module
Also exists non-formal format "none". This format allows serialization in a perl-dump using the Data::Dumper; deserialization based on the format lookup mechanism based on the data signature.
For Example:
my
$sr
= CTK::Serializer();
my
$perl
=
$sr
->deserialize(
$doc
);
In this example, the format is detecting automatically
deserialize
my
$perl
=
$sr
->deserialize(
$format
=>
$doc
,
$attrs
);
my
$perl
=
$sr
->deserialize(
$doc
);
The method returns deserialized structure of the document using specified format. The optional $attrs variable contents attributes of serialization module (hash-ref)
document, doc
my
$doc
=
$sr
->serialize(
$perl
);
my
$doc
=
$sr
->document;
This method returns document from last operation serialize or deserialize
error
my
$error
=
$sr
->error;
Returns current error or NULL value ("") if no errors occurred
format
my
$format
=
$sr
->
format
;
my
$format
=
$sr
->
format
(
$new_format
);
Format accessor
content_type
my
$content_type
=
$sr
->content_type;
my
$content_type
=
$sr
->content_type(
$format
);
Returns MIME-type for format
get_list
my
@supported_serializers
=
$sr
->get_list;
Returns list of supported serializers (their names)
lookup
my
$node
=
$sr
->lookup(
$format
);
Looks for format attributes
register_serializer
This method uses for extension of this base class. See source code
serialize
my
$doc
=
$sr
->serialize(
$format
=>
$perl
,
$attrs
);
my
$doc
=
$sr
->serialize(
$perl
);
The method returns serialized document of the structure using specified format. The optional $attrs variable contents attributes of serialization module (hash-ref)
stash
For internal use only. See source code
status
my
$status
=
$sr
->status;
Returns 1 if no errors and 0 if errors occurred
Typical example of use:
die
(
$sr
->error )
unless
$sr
->status;
struct, structure
my
$perl
=
$sr
->deserialize(
$doc
);
my
$perl
=
$sr
->struct;
This method returns structure from last operation serialize or deserialize
HISTORY
See Changes
file
DEPENDENCIES
IO::String, JSON, XML::Simple, YAML::XS
TO DO
See TODO
file
BUGS
* none noted
SEE ALSO
AUTHOR
Serż Minus (Sergey Lepenkov) https://www.serzik.com <abalama@cpan.org>
COPYRIGHT
Copyright (C) 1998-2022 D&D Corporation. All Rights Reserved
LICENSE
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See LICENSE
file and https://dev.perl.org/licenses