perl 生成json树
来源:互联网 发布:巫师2优化补丁 编辑:程序博客网 时间:2024/06/03 03:31
#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;
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;
阅读全文
0 0
- perl 生成json树
- JSON & Perl
- JSON动态生成树
- perl 读取json 数据
- Perl解析json数据
- perl 处理 json 数据
- perl 解析JSON
- perl与json
- perl post json
- perl json encode_json decode_json
- perl 解json数组
- perl json模块
- Windows-Perl-JSON
- perl 处理perl返回的json
- Perl 生成随机字符串
- perl 生成文件
- 编译perl,生成exe
- Perl生成excel文件
- 线程——消费者生产者
- UDP服务器、客户端的简单实现
- 合并txt文件
- 问题 T: A+B和C比大小
- const关键字
- perl 生成json树
- Angular 基础部分 1.1 简介
- Android View — Gradient 渐变
- 装饰者模式(Decorator Pattern)
- 【Linux 学习】Linux目录配置
- c++中“箭头(->)”和“点号(.)”操作符的区别 .
- 问题 U: 部分A+B
- Mysql
- QGraphicsView大于QGraphicsScene时出现滚动条时,改变scene的显示位置