Ich versuche, eine utf-8 JSON-Datei in Perl zu analysieren. https://jsonlint.com/ sagt der JSON ist gültig. Noch erhalte die Fehlermeldung:Parsing utf-8 Json mit Perl
malformed JSON Zeichenfolge weder tag, array, Objekt, Zahl, eine Zeichenfolge oder ein Atom, bei dem Charakter Offset 0 (vor dem „\ x {ef} \ x {bb} \ x bf {} { "...") bei parse.pl Leitung 15.
Der Code ist:
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";
}
den UTF-8 codiert json ist:
{"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"
}]
}
Ich sehe, dass (ef, bb, bf) sind die drei Bytes, die darauf hindeuten, dass es ein utf-8-Dokument ist, so verstehe ich nicht, was JSON-Paket hier fehlt. Wie kann ich es zum Laufen bringen?
Angeben „<: Codierung (UTF-8)“ auf die Datei nicht auch nicht öffnen helfen ...
Siehe auch [Datei :: BOM] (https://metacpan.org/pod/File::BOM). –