Как получить доступ к данным в JSON по ключу

#json #perl #dictionary #hash

#json #perl #словарь #хэш

Вопрос:

Мне нужно открыть файл с помощью JSON и прочитать 2 переменные, а также присвоить значения переменным в моей программе. Как это сделать?

 sub Config {
my $filename = 'perl_config.txt';
my $json_text = do {
    open(my $json_fh, "<:encoding(UTF-8)", $filename)
        or die("Can't open $filename": $!n");
    local $/;
    <$json_fh>
};
my $json = JSON->new;
my $data = $json->decode($json_text);



for my $key (sort keys %{$data}) {
    print "${key}:"; #how to acces to data by these keys?
    print "n";
}
  

Мой файл json выглядит следующим образом:

 {
"local_host": "localhost",
"local_port": "6000"
}
  

Ответ №1:

$data является хэш-ссылкой. Вы можете получить доступ к каждому значению из его ключа точно так же, как вы бы поступили с обычным хэшем, поэтому:

 for my $key (sort keys %{$data}) {
    print "$key = ", $data->{$key}, "n"; 
}
  

Комментарии:

1. Не могли бы вы сказать мне, как взять первый, второй …. и т.д.? Это происходит в цикле, но я могу иметь доступ, например, в array [0], array [5] и т. Д

Ответ №2:

Этого должно быть достаточно, чтобы вы туда попали:

 #!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

use JSON;

my $json = do { local $/; <DATA> };

my $data = JSON->new->decode($json);

say "Host is: $data->{local_host}";
say "Port is: $data->{local_port}";

__DATA__
{
"local_host": "localhost",
"local_port": "6000"
}