perl 生成json树

xiaoxiao2021-02-28  115

#perl -w use strict; use Encode;  #use Encode 'from_to'; use Data::Dumper; use JSON;  my @OrgRows = ();  my %id_data = ();  my %id_chirdren = (); my $firstid = "0";  &readdata(); sub readdata(){ my $line; while (defined($line = <>)){ my @data  = split(/\s+/,$line); continue if (scalar(@data) < 3); my $id = $data[0]; my $pid = $data[2]; my $name = $data[1]; $id_data{$id} = $name; #print "$data[0] - > $data[2] \n"; if (exists $id_chirdren{$pid} ){ push  @{$id_chirdren{$pid}} , $id; }else{ my @chirdren; push  @chirdren,   $id; $id_chirdren{$pid} = \@chirdren; } # print Dumper(%id_chirdren); #  print Dumper(%id_data); }  my %ResultData; &MakeANode(\%ResultData,$firstid); sub MakeANode(){ my ($hashref,$id) =@_; $hashref->{"name"}= $id; #print "$id_data{$id}\n"; $hashref->{"title"} = $id_data{$id}; $hashref->{"children"} = &MakeChildren($id); }  sub MakeChildren(){ my ($id) = @_; unless (exists $id_chirdren{$id}){ return ""; } my @ChildrenIDs = @{$id_chirdren{$id}}; my @result = (); foreach my $aChild (@ChildrenIDs){ my %NodeHash  = (); &MakeANode(\%NodeHash ,$aChild); push @result ,\%NodeHash; return \@result; } my $json = to_json \%ResultData;   # 不能用decode_json 否则会乱码 print $json;
转载请注明原文地址: https://www.6miu.com/read-66121.html

最新回复(0)