我有这个代码:
$coder = JSON::XS->new->utf8->pretty->allow_nonref;
%perl = $coder->decode ($json);
Run Code Online (Sandbox Code Playgroud)
当我写print %perl变量时,它说HASH(0x9e04db0).如何访问此HASH中的数据?
Eug*_*ash 13
由于该decode方法实际上返回对hash 的引用,因此分配的正确方法是:
%perl = %{ $coder->decode ($json) };
Run Code Online (Sandbox Code Playgroud)
也就是说,要从哈希中获取数据,您可以使用每个内置或循环其键,并通过下标来检索值.
while (my ($key, $value) = each %perl) {
print "$key = $value\n";
}
for my $key (keys %perl) {
print "$key = $perl{$key}\n";
}
Run Code Online (Sandbox Code Playgroud)
JSON :: XS-> decode返回对数组或散列的引用.要做你想做的事,你必须这样做:
$coder = JSON::XS->new->utf8->pretty->allow_nonref;
$perl = $coder->decode ($json);
print %{$perl};
Run Code Online (Sandbox Code Playgroud)
换句话说,您在使用时必须取消引用哈希.