Merging multiple JSON files into one using JSON::XS IN PERL
$json1 =
[
{
"name" : "bob",
"title" : "janitor",
"email" : "",
"iq" : "180",
"favorite_food" : "wagyu steak"
},
{
"name" : "joe",
"title" : "software engineer",
"email" : "",
"iq" : "80",
"favorite_food" : "raw hamburger"
}
]
$json2 =
{
"People" : [
{
"name" : "bob",
"title" : "janitor",
"email" : "",
"iq" : "180",
"favorite_food" : "wagyu steak"
},
{
"name" : "joe",
"title" : "software engineer",
"email" : "",
"iq" : "80",
"favorite_food" : "raw hamburger"
},
{
"name" : "sandy",
"title" : "dishwasher",
"email" : "",
"iq" : "240",
"favorite_food" : "filet mignon"
},
{
"name" : "george",
"title" : "software engineer",
"email" : "",
"iq" : "14",
"favorite_food" : "tacos"
}
]
}
CODE IS,
my @fields;
my $uuts = {};
while(<$fh>) {
chomp;
next if !-e "/tmp/files/$_.json";
my $decoded = decode_json( read_file("/tmp/files/$_.json") );
push @fields, $decoded;
}
$uuts->{People} = [ @fields ];
[download]
to just this:
my $uuts;
while (<$fh>) {
chomp;
next if ! -e "/tmp/files/$_.json";
push @{$uuts->{People}}, @{decode_json(read_file("/tmp/files/$_.js
+on"))};
}
I'm not really in a position to test that; however, here's a small test that shows the technique involved:
$ perl -Mstrict -Mwarnings -le '
use Data::Dumper;
my @jsons = ([{a=>1}, {b=>2}], [{c=>3}, {d=>4}]);
my $combo;
for (@jsons) {
print Dumper $_;
push @{$combo->{People}} => @$_;
}
print Dumper $combo;
'
$VAR1 = [
{
'a' => 1
},
{
'b' => 2
}
];
$VAR1 = [
{
'c' => 3
},
{
'd' => 4
}
];
$VAR1 = {
'People' => [
{
'a' => 1
},
{
'b' => 2
},
{
'c' => 3
},
{
'd' => 4
}
]
};