поиск значения в json-файле с помощью perl, похожего на запрос в БД - PullRequest
0 голосов
/ 04 июля 2018

У меня есть файл JSON JSON.dat, который содержит тысячи записей, подобных этой

'{"apple":1,"banana":2,"cat":3,"dog":4,"elephant":5}'

Мне нужно найти фрукт и получить соответствующий идентификатор, например, функция поиска (кошка) должна вернуть 3. Что является лучшим и эффективным способом сделать это, так как это JSON-файл с тысячами записей.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

JSON является стандартом сериализации данных и используется для преобразования структур данных в и из символьной строки для передачи или хранения. Строка JSON не должна использоваться без преобразования ее в структуру данных, родную для языка, который вы используете

Как только вы преобразуете данные примера в хеш-ссылку, посмотрите, скажем, элемент cat - это тривиальный хеш-доступ

use strict;
use warnings 'all';

use JSON 'decode_json';

my $data = do {
    open my $fh, '<', 'JSON.dat' or die $!;
    local $/;
    decode_json <$fh>;
};

print $data->{cat}, "\n";

выход

3
0 голосов
/ 04 июля 2018

Лучше всего загрузить модуль из CPAN, такой как JSON , который может конвертировать JSON в хеш.

#!/usr/bin/env perl

use strict;
use warnings;
use autodie;
use feature qw( :all );

use JSON;
use Data::Dumper;

my $json = '{"apple":1,"banana":2,"cat":3,"dog":4,"elephant":5}';
my $ref  = decode_json( $json );

say Dumper $ref;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...