Vincent
Vincent

Reputation: 4409

Perl Json parsing element numbers

I have to parse a JSON structure, which contains an unknown element name.

Normally I would access the data something like this.

my $layer1 = $responselayer->{'data'};
my $layer2 = $layer2->{'123'};
my $layer3 = $layer3->{'Details'};
print $layer3->{'name'};

Since the details number (123 / 945 / 345) is repeated in a random order (although unique in this case), I do not know how to address the data on 'Details' level.

"data":
    {
    "123":
        {
        "Details": 
            {
            "name":"Jake",
            "description":"aaa",
            }
        },
    "945":
        {
        "Details":
            {
            "name":"Jim",
            "description":"bbb",
            }
        },
    "345":
        {
        "Details":
            {
            "name":"Bob",
            "description":"ccc",
            }
        }
    }

Thanks!

Upvotes: 0

Views: 60

Answers (1)

mpapec
mpapec

Reputation: 50657

You'll have to loop over $layer1 hashref values,

my $layer1 = $responselayer->{'data'};
for my $layer2 (values %$layer1) {

  print $layer2->{'Details'}{'name'}, "\n";
}

in case you need to know what are the corresponding keys,

my $layer1 = $responselayer->{'data'};
for my $key (keys %$layer1) {

  my $layer2 = $layer1->{$key};
  print $layer2->{'Details'}{'name'}, "\n";
}

Upvotes: 2

Related Questions