2017-06-09 35 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}等形式表示全部...

感謝大家在這裏的幫助。 非常感謝。