2011-11-25 81 views
0

可能重複:
Parse perl array解析簡單的JSON數組在Perl

我試圖編輯舊perl腳本我就是一個完整的初學者。 從服務器返回的請求:

$result = { 
"data": { 
    "translations": [ 
    { 
    "translatedText": "Halloween" 
    } 
    ] 
} 
} 

如何可以解析此JSON字符串搶:

$result = "Halloween" 

感謝。

+0

perl?但爲什麼? –

+0

沒有選擇 - 編輯現有的irssi腳本 – ensnare

+0

請不要轉發問題。 – NullUserException

回答

1

有不可數的JSON解析模塊可用;最標準的是JSON

0

你可以採取簡單的方式做這樣的(沒有檢查這個編譯):

my $translatedText = "" 
if ($result =~ /"translatedText": "(.+?)"/) 
{ 
    $translatedText = $1; 
} 

如果要分析更多的項目和不同的JSON字符串,那麼你應該使用一些Perl模塊(有幾個可用)

+0

聰明。這會很好,但似乎並不奏效。 – ensnare

+0

我檢查了這裏的正則表達式:http://www.solmetra.com/scripts/regex/index.php它的工作原理...你得到什麼錯誤? –

2
#!/usr/bin/perl 

use strict; 
use warnings; 
use 5.010; 
use JSON; 

my $json = '{ 
"data": { 
    "translations": [ 
    { 
    "translatedText": "Halloween" 
    } 
    ] 
} 
}'; 

my $data = decode_json($json); 

say $data->{data}{translations}[0]{translatedText};