为什么这不起作用?
my $myHashEncoded = encode_json \%myHash;
my %myHashDecoded = decode_json($myHashEncoded);
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Reference found where even-sized list expected at ...
Run Code Online (Sandbox Code Playgroud)
所以我改成了:
my $myHashEncoded = encode_json \%myHash;
my $myHashDecoded = decode_json($enableInputEncoded);
Run Code Online (Sandbox Code Playgroud)
但后来显然%myHash不一样了$myHashDecoded.
如何从JSON字符串恢复正确的哈希?
Que*_*tin 10
假设您使用的是JSON.pm,文档说:
与encode_json相反:期望UTF-8(二进制)字符串并尝试将其解析为UTF-8编码的JSON文本,并返回结果引用.
所以你要收回你放入的内容.你正在放入一个hashref,然后你就会得到一个hashref.
如果你想要一个常规哈希,那么你只需要取消引用它就像你对任何其他hashref一样:
my $myHashRefDecoded = decode_json($myHashEncoded);
my %myHashDecoded = %$myHashRefDecoded;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8452 次 |
| 最近记录: |