为什么这不起作用?

my $myHashEncoded = encode_json \%myHash;
my %myHashDecoded = decode_json($myHashEncoded);

我得到了错误:
Reference found where even-sized list expected at ...

所以我将其更改为:
my $myHashEncoded = encode_json \%myHash;
my $myHashDecoded = decode_json($enableInputEncoded);

但是显然%myHash$myHashDecoded不同。

如何从JSON字符串恢复适当的哈希?

最佳答案

假设您正在使用JSON.pm,the documentation says:



因此,您可以取回所输入的内容。您可以输入hashref,也可以返回hashref。

如果您要使用常规哈希,则只需取消引用它即可,就像使用其他任何hashref一样:

my $myHashRefDecoded = decode_json($myHashEncoded);
my %myHashDecoded = %$myHashRefDecoded;

关于json - 从Perl中的JSON-String解码哈希,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30759097/

10-11 05:51