You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl中遍历JSON字符串并获取键值对至单个变量的方法

如何在Perl中获取包含键和值的单个哈希键值对?

我来帮你解决这个问题!你想要的是把哈希里的单个键值对(包含键和对应的值)存入变量,完全不需要手动构建JSON字符串,下面是具体的实现方法:

核心解决方案

在遍历哈希的键时,将当前键与对应的值组合成一个单键哈希引用即可,这样每个变量就会包含你期望的完整键值对结构。示例代码如下:

#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper qw(Dumper);

my $grades = {
    'PetiBar' => { 'Mathematics' => 82, 'Art' => 99, 'Literature' => 88 },
    'FooBar' => { 'Mathematics' => 97, 'Literature' => 67 }
};

# 遍历所有键,逐个生成单个键值对的哈希引用
foreach my $key (keys %{$grades}) {
    my $single_key_value_pair = { $key => $grades->{$key} };
    print "单个键值对:\n";
    print Dumper $single_key_value_pair;
}

运行结果

这段代码会输出两个独立的键值对结构,其中第一个就是你期望的:

单个键值对:
$VAR1 = {
          'PetiBar' => {
                         'Literature' => 88,
                         'Art' => 99,
                         'Mathematics' => 82
                       }
        };
单个键值对:
$VAR1 = {
          'FooBar' => {
                        'Literature' => 67,
                        'Mathematics' => 97
                      }
        };

针对特定键的快速获取

如果你只需要某个特定键的键值对(比如仅PetiBar),可以直接构建,不用遍历:

my $petibar_pair = { 'PetiBar' => $grades->{'PetiBar'} };
print Dumper $petibar_pair;

为什么之前的方法不行?

  • foreach my $val ($grades):这里$grades本身就是整个哈希的引用,所以遍历的话只会输出整个哈希对象。
  • foreach my $key (keys %{$grades}) { print Dumper $grades->{$key}; }:这段代码只取了键对应的值,没有把键包含进去,所以输出的只是子哈希。

关于JSON的补充

如果你之后需要将这个单键哈希转成JSON字符串,直接用JSON模块处理即可,完全不需要手动拼接:

use JSON;
my $json_str = to_json($single_key_value_pair);
print $json_str;

内容的提问来源于stack exchange,提问作者Orjanp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:26:03