use warnings; use strict; use JSON; my $original = '{"OWNER":"KeyProjects","age1":"eon","ht1":"moo"}'; my $desired = '{"OWNER":"KeyProjects","scheduled":{"age1":"eon","ht1":"moo"}}'; my $data = decode_json($original); print "The owner is; ", $data->{OWNER}, $/; print "age1 is: ", $data->{age1}, $/; my $age = delete $data->{age1}; print "age1 is now: ", $data->{age1}, $/; # Empty, we deleted it... # ...while putting it into- print "Here I am: $age\n"; # \n = $/, usually/sort-of. my $ht = delete $data->{ht1}; my %sub_hash = ( ht1 => $ht, age1 => $age ); # Perl auto-vivivies data- $data->{scheduled} = \%sub_hash; # \% is like {} print encode_json( $data ), $/; # {"scheduled":{"age1":"eon","ht1":"moo"},"OWNER":"KeyProjects"} # Remember, order is irrelevant in Objects.