use warnings; use strict; use v5.14; use Mojo::JSON; use Mojo::JSON::Pointer; my $j = Mojo::JSON->new; my $tasks_src = { tasks => [ { name => 'Test task 1', desc => 'Test desc 1', dur => 611 }, { name => 'Test task 2', desc => 'Test desc 2', dur => 612 } ] }; my $in = $j->encode($tasks_src); die 'what 1' unless defined $in; $in = '{ "tasks":[ {"dur":611,"desc":"Test desc 1","name":"Test task 1"}, {"dur":612,"desc":"Test desc 2","name":"Test task 2"} ] }'; my $data = $j->decode($in); die 'what 2' unless defined $data; my @tasks = $data->{tasks}; my $projID=1; foreach my $task (@tasks) { say $task; my $p = Mojo::JSON::Pointer->new; $task->{proj_id} = $projID; foreach my $w (qw( /name /desc /dur /proj_id )) { say 'error'.$w unless $p->contains( $task, $w ); } my $self->db->resultset('Task')->create($task); }