我想解析一个用Perl编写的utf-8 json文件。 https://jsonlint.com/表示json有效。 不过我得到的错误消息:用Perl解析utf-8 json文件
畸形JSON字符串,既不标签,数组,对象,数字,字符串或原子,在字符偏移0(前“\ X {EF} \ X {BB} \ X在parse.pl线{BF} { “...”)15.
的代码是:
use strict;
use utf8;
use JSON qw();
my $filename = 'k2.json';
my $json_text = do {
open(my $json_fh, $filename) or die("Can't open $filename: $!\n");
local $/;
<$json_fh>
};
my $json = JSON->new;
my $data = $json->decode($json_text);
for (@{$data->{data}}) {
print $_->{lng}."\n";
}
的UTF-8编码的JSON是:
{"data":
[{"lng":"19.03252602",
"lat":"47.49795914",
"display_name":"I. kerület (Attila út)",
"active":"1",
"url":"/hu/kormanyablakok/budapest/i-kerulet/i-kerulet-attila-ut/283"
}]
}
我看到(ef,bb,bf)是三个字节,表明它是一个utf-8文档,所以我不明白在这里丢失了什么JSON包。我怎样才能使它工作?
指定“<:编码(UTF-8)”在打开文件并没有帮助...
另请参阅[File :: BOM](https://metacpan.org/pod/File::BOM)。 –