2017-06-09 30 views
-2

所以我采取了JSON格式化输出的卷曲输出并将其分配给一个变量。perl - >解析JSON字符串的散列

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个字符串分割成我的哈希简单的阵列。

任何方式,我可以很容易地将其转换成适当的散列数组,所以我可以遍历它?

在此先感谢。

回答

3

任何方式,我可以很容易地将其转换为适当的哈希阵列,所以我可以遍历它?

你已经做到了。

所以我接受了json格式化输出的卷曲输出并将其分配给一个变量。

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

这是不正确的。

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

当我查看$ catcherJSON时,我想看到一个哈希数组,但我只是得到一个大量的json字符串。

$catcherJSON不是JSON字符串。 $catcherJSON是一个Perl哈希数组。您已经将JSON解码为一个Perl数据结构,其中包含decode_json。它已被格式化为Dumper()回到Perl代码,所以你可以阅读它。

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

+0

'它已被Dumper()格式化回Perl代码.' - 进入字符串。 –

+0

这让我更加亲近,所以我很感激帮助。 –

+0

只需要一些进一步的帮助,因为它现在抛出另一个错误。需要再次检查,并将张贴现在显示的错误 –

0
my $catcherJSON = $response->content; 
$catcherJSON =~ s/\n//g; 
$catcherJSON = decode_json($catcherJSON); 

这是我最终的解决方案。 当卷曲响应进入时,所有json都有换行符。一旦换行符被删除,我的decode_json现在将以$ catcherJSON - > [0] {id}等形式表示全部...

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