【问题标题】:How to access data in JSON by key如何通过密钥访问 JSON 中的数据
【发布时间】:2023-03-10 05:35:01
【问题描述】:

我需要用 JSON 打开文件并读取 2 个变量,然后在我的程序中为 vars 赋值。怎么做?

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"
}

【问题讨论】:

    标签: json perl dictionary hash


    【解决方案1】:

    $data 是一个哈希引用。您可以像使用常规哈希一样从其键中访问每个值,因此:

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

    【讨论】:

    • 你能告诉我如何采取第一个,第二个......等吗?它进入循环,但我可以像在数组 [0]、数组 [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"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-06
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      相关资源
      最近更新 更多