Projekt

Allgemein

Profil

Herunterladen (1,55 KB) Statistiken
| Zweig: | Markierung: | Revision:
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 {
goto &JSON::from_json;
}

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
(44-44/83)