aboutsummaryrefslogtreecommitdiffstats
path: root/t/t0019/parse_json.perl
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-08-15 15:08:22 -0700
committerJunio C Hamano <gitster@pobox.com>2018-08-15 15:08:22 -0700
commita14a9bfc132f8fe80cca33d14b1acbcda945de13 (patch)
tree82bbfba41374f8e350b9a7146740a3763b54cdeb /t/t0019/parse_json.perl
parentMerge branch 'bb/make-developer-pedantic' (diff)
parentjson_writer: new routines to create JSON data (diff)
downloadgit-a14a9bfc132f8fe80cca33d14b1acbcda945de13.tar.gz
git-a14a9bfc132f8fe80cca33d14b1acbcda945de13.zip
Merge branch 'jh/json-writer'
Preparatory code to later add json output for telemetry data. * jh/json-writer: json_writer: new routines to create JSON data
Diffstat (limited to 't/t0019/parse_json.perl')
-rw-r--r--t/t0019/parse_json.perl52
1 files changed, 52 insertions, 0 deletions
diff --git a/t/t0019/parse_json.perl b/t/t0019/parse_json.perl
new file mode 100644
index 0000000000..ca4e5bfa78
--- /dev/null
+++ b/t/t0019/parse_json.perl
@@ -0,0 +1,52 @@
+#!/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 (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++;
+}
+