Jeff Hostetler | 7545941 | 2018-07-13 16:54:08 +0000 | [diff] [blame] | 1 | #!/usr/bin/perl |
| 2 | use strict; |
| 3 | use warnings; |
| 4 | use JSON; |
| 5 | |
| 6 | sub dump_array { |
| 7 | my ($label_in, $ary_ref) = @_; |
| 8 | my @ary = @$ary_ref; |
| 9 | |
| 10 | for ( my $i = 0; $i <= $#{ $ary_ref }; $i++ ) |
| 11 | { |
| 12 | my $label = "$label_in\[$i\]"; |
| 13 | dump_item($label, $ary[$i]); |
| 14 | } |
| 15 | } |
| 16 | |
| 17 | sub dump_hash { |
| 18 | my ($label_in, $obj_ref) = @_; |
| 19 | my %obj = %$obj_ref; |
| 20 | |
| 21 | foreach my $k (sort keys %obj) { |
| 22 | my $label = (length($label_in) > 0) ? "$label_in.$k" : "$k"; |
| 23 | my $value = $obj{$k}; |
| 24 | |
| 25 | dump_item($label, $value); |
| 26 | } |
| 27 | } |
| 28 | |
| 29 | sub dump_item { |
| 30 | my ($label_in, $value) = @_; |
| 31 | if (ref($value) eq 'ARRAY') { |
| 32 | print "$label_in array\n"; |
| 33 | dump_array($label_in, $value); |
| 34 | } elsif (ref($value) eq 'HASH') { |
| 35 | print "$label_in hash\n"; |
| 36 | dump_hash($label_in, $value); |
Ævar Arnfjörð Bjarmason | 8c97e38 | 2018-08-24 15:20:15 +0000 | [diff] [blame] | 37 | } elsif (ref $value) { |
| 38 | my $bool = $value ? 1 : 0; |
| 39 | print "$label_in $bool\n"; |
Jeff Hostetler | 7545941 | 2018-07-13 16:54:08 +0000 | [diff] [blame] | 40 | } elsif (defined $value) { |
| 41 | print "$label_in $value\n"; |
| 42 | } else { |
| 43 | print "$label_in null\n"; |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | my $row = 0; |
| 48 | while (<>) { |
| 49 | my $data = decode_json( $_ ); |
| 50 | my $label = "row[$row]"; |
| 51 | |
| 52 | dump_hash($label, $data); |
| 53 | $row++; |
| 54 | } |
| 55 | |