【问题标题】:perl -> Parsing json string of hashperl -> 解析散列的 json 字符串
【发布时间】:2017-11-10 21:24:56
【问题描述】:

所以我获取了一个 json 格式输出的 curl 输出并将其分配给一个变量。

my $catcherJSON = decode_json $response->content;
print Dumper $catcherJSON;

当我查看 $catcherJSON 时,我想查看一个哈希数组,但我只得到了一大串 json。

$VAR1 = [
      {
        'priority' => 5,
        'ingestPath' => '/vg/24CHVOD_en',
...
...
...
      },
      {
        'priority' => 5,
        'ingestPath' => 
...
...
      },
      {
        'priority' => 5,
        'ingestPath' => 

... 
...  
      },
      {
        'priority' => 5,
        'ingestPath' => 

 ...
 ...},
      {
        'priority' => 5,
        'ingestPath' => 
  ....
  ...                 
      }
    ];

哈希重复(大约有 300 个唯一结果),我试图在 perl 中弄清楚如何将这 1 个字符串简单地拆分为我的哈希数组。

有什么方法可以轻松地将其转换为适当的哈希数组,以便我可以遍历它?

提前致谢。

【问题讨论】:

    标签: arrays json perl hash


    【解决方案1】:

    有什么方法可以轻松地将其转换为适当的哈希数组,以便我可以遍历它?

    你已经做到了。

    所以我获取了一个 json 格式输出的 curl 输出并将其分配给一个变量。

    my $catcherJSON = decode_json $response->content;`
    

    这不正确。

    您从 $response->content 获取 JSON 格式的字符串,将 JSON 解码为 Perl 数据结构,并将其存储在 $catcherJSON 中。

    当我查看 $catcherJSON 时,我想查看一个哈希数组,但我只得到了一大串 json。

    $catcherJSON 不是 JSON 字符串。 $catcherJSON 是一个 Perl 哈希数组。您已经使用decode_json 将 JSON 解码为 Perl 数据结构。它已被Dumper() 格式化回 Perl 代码,以便您阅读。

    你的代码很好,你有你想要的。例如,$catcherJSON->[0]{ingestPath} 将是 '/vg/24CHVOD_en'

    【讨论】:

    • It's been formatted by Dumper() back into Perl code. -- 进入字符串。
    • 这让我更接近了,所以我很感激帮助。
    • 只需要一些进一步的帮助,因为它现在抛出另一个错误。需要再次检查并将发布现在出现的错误
    • 打印自卸车 $catcherJSON->[0]{id};在 ./avcm.catchers.parse.pl 第 81 行使用“strict refs”时,不能使用字符串 ("[ { "id" : "128", "name" : ""...) 作为 ARRAY 引用.
    • @JeffGrubb my $catcherJSON = decode_json $response->content; print Dumper $catcherJSON->[0]{id}; 应该可以工作。您的错误提示您删除了decode_json
    【解决方案2】:
    my $catcherJSON = $response->content;
    $catcherJSON =~ s/\n//g;
    $catcherJSON = decode_json($catcherJSON);
    

    这是我的最终解决方案。 当 curl 响应进来时,所有的 json 都有换行符。删除换行符后,我的 decode_json 现在将全部引用为 $catcherJSON->[0]{id} 等...

    在这里感谢大家的帮助。 非常感谢。

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 1970-01-01
      • 2014-07-19
      • 2018-02-20
      • 2015-03-11
      • 2017-04-27
      • 2021-06-17
      • 2013-06-22
      • 1970-01-01
      相关资源
      最近更新 更多