The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use strict;
use vars qw($VERSION @ISA);
=head1 NAME
MLDBM::Serializer::JSON - DBM serializer uses JSON for language interoperability
=cut
$VERSION = '0.002';
@ISA = qw(MLDBM::Serializer);
=head1 SYNOPSIS
# using MLDBM hash interface
use MLDBM qw(DB_File JSON); # use Storable for serializing
my %db;
my $dbm = tie %db, 'MLDBM' [ ... other MLDBM args ... ] or die $!
$db{foo} = 'bar';
$db{more} = 42;
while( my ($k,$v) = each %db) {
print "$k = $v\n";
}
# or using DBD::DBM ...
use DBI;
my $dbh = DBI->connect( "dbi:DBM:", undef, undef, {
dbm_type = "DB_File",
dbm_mldbm = "JSON",
});
...
=head1 DESCRIPTION
MLDBM::Serializer::JSON provides an extension to MLDBM to enable storing the
additional columns as JSON instead of Data::Dumper or FreezeThaw.
JSON is very widely used - from Perl over Ruby to Python and surely
JavaScript and so on.
=head1 SUBROUTINES/METHODS
=head2 serialize
serialize a given array into a json string
=cut
sub serialize {
return JSON::Any->objToJson([$_[1]]);
}
=head2 deserialize
deserialize a json string into an array for MLDBM
=cut
sub deserialize {
my ($obj) = JSON::Any->jsonToObj($_[1]);
return $obj->[0];
}
=head1 AUTHOR
Jens Rehsack, C<< <rehsack at cpan.org> >>
=head1 BUGS
Please report any bugs or feature requests to
C<bug-mldbm-serializer-json at rt.cpan.org>, or through the web interface
I will be notified, and then you'll automatically be notified of progress
on your bug as I make changes.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc MLDBM::Serializer::JSON
You can also look for information at:
=over 4
=item * RT: CPAN's request tracker
=item * AnnoCPAN: Annotated CPAN documentation
=item * CPAN Ratings
=item * Search CPAN
=back
=head1 LICENSE AND COPYRIGHT
Copyright 2010 Jens Rehsack.
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.
=cut
1; # End of MLDBM::Serializer::JSON