Reputation: 415
I've got a file like this:
{
"dev":
{
"data": "1"
},
"stg":
{
"data": "1"
},
"pre":
{
"data": "1"
},
"prod":
{
"data": "1"
},
}
I load the json like this:
open(FH,"<",$file) or die "environments.json file doesn't exists!\n";
my $data = <FH>;
my $ret = JSON::decode_json( $data );
It loads properly, I can do:
print "Dumper: " . Dumper($ret) . "\n";
But when I try to loop through it with:
foreach my $env( @$ret )
{
print "Environment: " . $env->{"data"} . "\n";
}
I get:
Not an ARRAY reference at ./launcher.pl line 20, <FH> line 1.
On the foreach my $env( @$ret )
line
Help is appreciated!
Thanks!
David
Upvotes: 1
Views: 2358
Reputation: 386706
There's no array in that JSON.
for my $env_name (keys(%$ret)) {
my $env = $ret->{$env_name};
... $env->{data} ...
}
Upvotes: 2