1 package Tak::Role::ObjectMangling;
3 use Scalar::Util qw(weaken);
4 use JSON::PP qw(encode_json decode_json);
11 has encoder_json => (is => 'lazy');
12 has decoder_json => (is => 'lazy');
14 sub _build_encoder_json {
15 JSON::PP->new->allow_nonref(1)->convert_blessed(1);
18 sub _build_decoder_json {
21 JSON::PP->new->allow_nonref(1)->filter_json_single_key_object(
22 __proxied_object__ => sub { $self->inflate($_[0]) }
27 my ($self, $data) = @_;
28 local *UNIVERSAL::TO_JSON = sub { $self->deflate($_[0]) };
29 decode_json($self->encoder_json->encode($data));
33 my ($self, $data) = @_;
34 $self->decoder_json->decode(encode_json($data));