You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.0 KiB
55 lines
1.0 KiB
#!/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++; |
|
} |
|
|
|
|