55 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
#!/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++;
 | 
						|
}
 | 
						|
 |