#perl #json #parsing
#perl #json #Синтаксический анализ
Вопрос:
У меня есть файл JSON, и я пытаюсь разобрать его на Perl. Пока у меня есть:
use strict;
use warnings;
use JSON;
open my $fh, "/Users/arjunnayini/Desktop/map_data.json";
my @decoded_json = @{decode_json($fh)};
Но я получаю сообщение об ошибке, которое у меня есть:
«искаженная строка JSON, не являющаяся ни массивом, ни объектом, ни числом, ни строкой, ни атомом, со смещением символа 0 (перед «GLOB (0x100804ed0)») «
Я совершенно уверен, что файл JSON отформатирован правильно, поэтому я не уверен, где это происходит неправильно. Есть предложения?
Ответ №1:
Предполагая, что ваш вызов JSON правильный, вам нужно сначала загрузить файл:
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
my $json;
{
local $/; #enable slurp
open my $fh, "<", "/Users/arjunnayini/Desktop/map_data.json";
$json = <$fh>;
}
my @decoded_json = @{decode_json($json)};
Комментарии:
1. или: local @ARGV = «/Users/arjunnayini/Desktop/map_data.json»; $json = <>;
2. Да, есть другие способы сначала просмотреть файл. Мой пример показывает распространенную идиому.