使用与数据库中的查询类似的perl在json文件中搜索值

时间:2018-07-04 11:56:18

标签: json perl parsing

我有一个JSON文件JSON.dat,其中包含数千个这样的条目

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

我需要搜索一个水果并获取相应的ID,例如search(cat)函数应返回3。 既然它是一个具有数千个条目的JSON文件,那么执行此操作的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

最好是从CPAN加载一个模块,例如Integers,该模块可以将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;

答案 1 :(得分:0)

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