解析object / hash"",或}解析JSON文件时出错

时间:2014-07-25 15:53:36

标签: json perl

我正在尝试打印一个大型.json文件的“name”字段的内容,我遇到了解析问题。到目前为止,我已尝试使用“&lt ;: 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";
}

错误本身是, 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

1 个答案:

答案 0 :(得分:6)

my $ejson = <$fh>;

是标量上下文中的赋值,因此您只将输入文件的第一行加载到$ejson

有很多方法可以将整个输入流加载到标量中:

my $ejson = join '', <$fh>;

my $ejson = do {
    local $/;
    <$fh>;
};

或者使用File::Slurp asjo建议。