如何从 Perl 中的 JSON 响应中提取数据

How to pull data from a JSON response in Perl

我有一个 JSON 响应,我需要在 Perl 中对其进行处理以从中提取信息并进行进一步处理。 JSON 文档如下所示:

{
  "SITE_1": [
    {
      "values": [
        {
           "time": 20170616100000,
           "v":    11
        }
      ]
    }
  ],
  "SITE_2": [
    {
      "values": [
        {
           "time": 20170616100000,
           "v":    12
        }
     }
  ]
}

我正在尝试使用子程序处理它:

my ($ref) = @_;
foreach my $row (0..$#{$ref}) {
   $val = ${$ref}{$site}[0]{values}[0]{v}; 
   Prt('-O',"$val\n");    etc.. etc...

获得 "Not an Array error" 我认为是因为 JSON 中的第一项在 { } 而不是 [ ] 中。

解析数据的最简单方法是什么?

您是在问如何迭代散列的元素吗?

for my $site (keys(%$ref)) {
   ...
}