use JSON;
my $json = '{ "o": "hai", "hurr": "derp" }';
my $data = decode_json( $json );
print $data->{o}, $/; # Prints "hai"
####
print encode_json($data), $/;
# Prints: {"hurr":"derp","o":"hai"}
####
# Some plain Perl-
my @stuf = ( 1, 2, 3 ); # Or, idiomatically ( 1..3 )
print encode_json(\@stuf), $/; # Need \ to take reference.
# Same outcome as [] for array ref plus 1..3-
print encode_json( [ 1 .. 3 ] ), $/;
####
{"OWNER":"KeyProjects","age1":"eon","ht1":"moo","wc":"EF1"}
####
{"OWNER":"KeyProjects","scheduled":{"age1":"eon","ht1":"moo"},"wc":"EF1"}
####
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.
####
use warnings;
use strict;
use JSON;
my $original = '{"OWNER":"KeyProjects","age1":null,"ht1":null}';
my $desired = '{"OWNER":"KeyProjects","scheduled":{"age1":null,"ht1":null}}';
my $data = decode_json($original);
for my $key ( keys %{ $data } )
{
print "Found a key: $key", $/;
if ( $key =~ /\A (?: age\d+ | ht\d+ ) \z/x )
{
print " -> It matches our regular expression\n";
print " -> Deleting it from data structure\n";
my $value = delete $data->{$key};
print " -> Putting it back under sub-structure with key 'scheduled'\n";
$data->{scheduled}{$key} = $value;
}
else
{
print " -> It's fine where it is, no action taken\n";
}
}
print encode_json( $data ), $/;
####
use Test::More;
my $desired_data = decode_json( $desired );
is_deeply( $desired_data, $data, "Data structures match" );
done_testing(1);