David Villasmil
David Villasmil

Reputation: 415

perl load json from file and loop

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

Answers (1)

ikegami
ikegami

Reputation: 386706

There's no array in that JSON.

for my $env_name (keys(%$ret)) {
   my $env = $ret->{$env_name};

   ... $env->{data} ...

}

Upvotes: 2

Related Questions