kivitendo/SL/JSON.pm @ 5c859d64
7647d46a | Moritz Bunkus | package SL::JSON;
|
||
use strict;
|
||||
use JSON ();
|
||||
use parent qw(Exporter);
|
||||
our @EXPORT = qw(encode_json decode_json to_json from_json);
|
||||
sub new {
|
||||
shift;
|
||||
return JSON->new(@_)->convert_blessed(1);
|
||||
}
|
||||
sub encode_json {
|
||||
return JSON->new->convert_blessed(1)->encode(@_);
|
||||
}
|
||||
sub decode_json {
|
||||
goto &JSON::decode_json;
|
||||
}
|
||||
sub to_json {
|
||||
my ($object, $options) = @_;
|
||||
$options ||= {};
|
||||
$options->{convert_blessed} = 1;
|
||||
return JSON::to_json($object, $options);
|
||||
}
|
||||
sub from_json {
|
||||
6d72d66a | Sven Schöling | goto &JSON::from_json;
|
||
7647d46a | Moritz Bunkus | }
|
||
1;
|
||||
__END__
|
||||
=pod
|
||||
=encoding utf8
|
||||
=head1 NAME
|
||||
SL::JSON - Thin wrapper around the JSON module that provides default options
|
||||
=head1 SYNOPSIS
|
||||
use SL::JSON;
|
||||
my $escaped_text_object = SL::Presenter->get->render('some/template');
|
||||
my $json = encode_json($escaped_text_object);
|
||||
=head1 OVERVIEW
|
||||
JSON by default does not dump or stringify blessed
|
||||
objects. kivitendo's rendering infrastructure always returns thin
|
||||
proxy objects as instances of L<SL::Presenter::EscapedText>. This
|
||||
module provides the same functions that L<JSON> does but changes their
|
||||
default regarding converting blessed arguments.
|
||||
=head1 FUNCTIONS
|
||||
=over 4
|
||||
=item C<decode_json $json>
|
||||
Same as L<JSON/decode_json>.
|
||||
=item C<encode_json $object>
|
||||
Same as L<JSON/encode_json> but sets C<convert_blessed> first.
|
||||
=item C<from_json $object [, $options]>
|
||||
Same as L<JSON/from_json>.
|
||||
=item C<to_json $object [, $options ]>
|
||||
Same as L<JSON/to_json> but sets C<convert_blessed> first.
|
||||
=back
|
||||
=head1 BUGS
|
||||
Nothing here yet.
|
||||
=head1 AUTHOR
|
||||
Moritz Bunkus E<lt>m.bunkus@linet-services.deE<gt>
|
||||
=cut
|