t / t0019 / parse_json.perlon commit json_writer: new routines to create JSON data (7545941)
   1#!/usr/bin/perl
   2use strict;
   3use warnings;
   4use JSON;
   5
   6sub 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
  17sub 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
  29sub 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);
  37    } elsif (defined $value) {
  38        print "$label_in $value\n";
  39    } else {
  40        print "$label_in null\n";
  41    }
  42}
  43
  44my $row = 0;
  45while (<>) {
  46    my $data = decode_json( $_ );
  47    my $label = "row[$row]";
  48
  49    dump_hash($label, $data);
  50    $row++;
  51}
  52