#!/usr/bin/perl use strict; use warnings; use JSON; # version 2.90 my $hash = from_json( test_json_string() );
for my $key ( keys %$hash ) { my $filename = sprintf "%.06d.json", $key; my $subhash = $hash->{ $key }; open my $fh, '>', $filename or die "Can't open $filename: $!"; print $fh to_json( { $key => $subhash }, { pretty => 1 } ); close $fh; } sub test_json_string { <<_end_; { "106" : { "id54011" : [ { "partno1" : "16690617" }, { "partno2" : "5899180" } ], "parts" : [ "0899180", "16920617" ], "id5632" : [ { "partno1" : "090699180" } ] }, "560" : { "id9452" : [ { "partno2" : "1569855" } ], "parts" : [ "03653624", "15899855" ], "id578" : [ { "partno3" : "0366393624" }, { "partno4" : "0363213624" } ] } } _end_ } __END__ On 3/10/17, Marios lyberak <marios.lybe...@gmail.com> wrote: > Hello community, > > i have a json file, with a structure like this: > > { > "106" : { > "id54011" : [ > { > "partno1" : "16690617" > }, > { > "partno2" : "5899180" > } > ], > "parts" : [ > "0899180", > "16920617" > ], > "id5632" : [ > { > "partno1" : "090699180" > } > ] > }, > "560" : { > "id9452" : [ > { > "partno2" : "1569855" > } > ], > "parts" : [ > "03653624", > "15899855" > ], > "id578" : [ > { > "partno3" : "0366393624" > }, > { > "partno4" : "0363213624" > } > ] > } > } > I need to split this json, into files, like this: > > each json file, will consist of one object. 000106.json, and 000560.json. > (all names, must gave 6 digits, so zeros must be added) > > I have tried to use eval for this, but no luck up to now... > > expected output: json file 1, named 000106.json: > > { > "106" : { > "id54011" : [ > { > "partno1" : "16690617" > }, > { > "partno2" : "5899180" > } > ], > "parts" : [ > "0899180", > "16920617" > ], > "id5632" : [ > { > "partno1" : "090699180" > } > ] > } > and json file 2, named 000560.json: > > { > "560" : { > "id9452" : [ > { > "partno2" : "1569855" > } > ], > "parts" : [ > "03653624", > "15899855" > ], > "id578" : [ > { > "partno3" : "0366393624" > }, > { > "partno4" : "0363213624" > } > ] > } > How would you handle this? >