-1
我通过解码JSON数据得到了这个输出。反向哈希散列在Perl中
现在我想扭转这个数据结构并使用Perl打印它。
任何人都可以用下面的代码片段来帮助我吗?
我有这个数据在一个变量,我打印它。我的输出如下
如我有哈希散列,看起来像这样:
$VAR1 = {
'Packet Loss to Source' => {
'142' => {
'161' => '0.000',
'162' => '0.000',
'141' => '0.000'
}
},
'Packet Loss to Destination' => {
'142' => {
'161' => '0.000',
'162' => '0.000',
'141' => '0.000'
}
},
'Average Jitter to Source' => {
'142' => {
'161' => '13.323',
'162' => '37.003',
'141' => '192.309'
}
},
'Availability' => {
'142' => {
'161' => '0.000',
'162' => '0.000',
'141' => '1.042'
}
},
'Average Round Trip Time' => {
'142' => {
'161' => '772.278',
'162' => '389.566',
'141' => '8557.511'
}
},
'Average Jitter to Destination' => {
'142' => {
'161' => '13.323',
'162' => '37.003',
'141' => '192.309'
}
}
};
这就是我试图让输出的代码。我读取文本文件并获取JSON数据,将其解码并打印出来。我在变量$perl_obj
中得到了上述输出。
#my $dirname = "/home/brix/ravikiran/doc/demo.txt";
my $dirname = "/home/brix/ravikiran/doc/JSONData.txt";
open HANDLE, $dirname;
my @raw_data = <HANDLE>;
my $json_text;
foreach my $row (@raw_data) {
$json_text .= $row;
}
close(HANDLE);
print "$json_text;\n";
my $json = JSON::XS->new();
$json = json->pretty(1)->
space_before(1)->
space_after(1)->
canonical(1)->
allow_blessed(1)->
convert_blessed(1);
my $perl_obj = $json->decode($json_text);
print STDOUT Dumper($perl_obj);
你是什么意思“相反”?你知道'161'=>'0.000','162'=>'0.000'是不可逆的,所以key - > value和value - > key,因为这些值是相同的(并且会相互覆盖) 。 – TLP
在发布之前,请花些时间让您的问题至少可读。 – sidyll
你真正的问题是什么?你给了我们代码和输出,但没有错误。如果你问的是如何“颠倒数据结构”,你将不得不澄清你的意思。 – RickF