我正在尝试打印一个大的.json文件的"name"字段的内容,我遇到了解析问题.到目前为止,我已尝试使用"<:encoding(UTF-8)"打开.json文件,但到目前为止还没有运气.
这是我的代码,错误在第11行:
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
open(my $fh, "<:encoding(UTF-8)", "pokedex.json");
my $ejson = <$fh>;
close($fh);
my $djson = decode_json $ejson;
for(my $i=1;$i<=718;$i++){
print $djson->{"$i"}{"name"}, "\n";
}
Run Code Online (Sandbox Code Playgroud)
错误本身就是 , or } expected while parsing object/hash, at character offset 1 (before "\n") at jsonreverser.pl line 11.
我通过在线验证程序运行了.json文件,它说它格式正确.这是json文件的链接:http://vps.zazez.com/junk/pokedex.json
my $ejson = <$fh>;
Run Code Online (Sandbox Code Playgroud)
是标量上下文中的赋值,因此您只是将输入文件的第一行加载到$ejson
.
有很多方法可以将整个输入流加载到标量中:
my $ejson = join '', <$fh>;
my $ejson = do {
local $/;
<$fh>;
};
Run Code Online (Sandbox Code Playgroud)
或者使用File::Slurp
asjo建议.
归档时间: |
|
查看次数: |
1902 次 |
最近记录: |