package DeWeave::Collection; use Moose; use namespace::autoclean; use MooseX::Types::Moose qw(ArrayRef Int Str Num); use JSON::Any; use DeWeave::EDO; has items => ( isa => ArrayRef['DeWeave::WBO'], is => 'ro', required => 1, ); sub from_json { my ($class,$json,$crypt)=@_; my $j = JSON::Any->new; my $args = $j->decode($json); my @items = map { DeWeave::EDO->new({%$_,__crypt=>$crypt}) } @$args; return $class->new({ items => \@items, }); } 1;