| #!/usr/bin/perl | |
| use strict; | |
| use warnings; | |
| use JSON; | |
| sub dump_array { | |
| my ($label_in, $ary_ref) = @_; | |
| my @ary = @$ary_ref; | |
| for ( my $i = 0; $i <= $#{ $ary_ref }; $i++ ) | |
| { | |
| my $label = "$label_in\[$i\]"; | |
| dump_item($label, $ary[$i]); | |
| } | |
| } | |
| sub dump_hash { | |
| my ($label_in, $obj_ref) = @_; | |
| my %obj = %$obj_ref; | |
| foreach my $k (sort keys %obj) { | |
| my $label = (length($label_in) > 0) ? "$label_in.$k" : "$k"; | |
| my $value = $obj{$k}; | |
| dump_item($label, $value); | |
| } | |
| } | |
| sub dump_item { | |
| my ($label_in, $value) = @_; | |
| if (ref($value) eq 'ARRAY') { | |
| print "$label_in array\n"; | |
| dump_array($label_in, $value); | |
| } elsif (ref($value) eq 'HASH') { | |
| print "$label_in hash\n"; | |
| dump_hash($label_in, $value); | |
| } elsif (ref $value) { | |
| my $bool = $value ? 1 : 0; | |
| print "$label_in $bool\n"; | |
| } elsif (defined $value) { | |
| print "$label_in $value\n"; | |
| } else { | |
| print "$label_in null\n"; | |
| } | |
| } | |
| my $row = 0; | |
| while (<>) { | |
| my $data = decode_json( $_ ); | |
| my $label = "row[$row]"; | |
| dump_hash($label, $data); | |
| $row++; | |
| } | |