2012-03-28 66 views
-7

我在文件中的JSON輸出如下perl的解析JSON值

{"devices":{"@size":"3","device":[{"@key":"8519","ipAddr":"172.168.2.1", 
"name":"sri-asr1000"},{"@key":"1994","ipAddr":"172.17.41.5","name": 
"sp-asr9k"},{"@key":"1998","ipAddr":"115.145.9.14","name":"sr-nex10k"}]}} 

外面我想在表格式中提取名稱和IP地址。

例如

sri-asr1000 172.168.2.1 
sp-asr9k 172.17.41.5 
sr-nex10k 115.145.9.14 

我需要perlscript爲此,請幫助。

回答

4
my $fileContents = '{"devices":{"@size":"3","device":[{"@key":"8519","ipAddr":"172.168.2.1","name":"sri-asr1000"},{"@key":"1994","ipAddr":"172.17.41.5","name":"sp-asr9k"},{"@key":"1998","ipAddr":"115.145.9.14","name":"sr-nex10k"}]}}'; 
use JSON; 
use Data::Dumper; 

my $json = JSON->new->allow_nonref(); 

my $hashTable = $json->decode($fileContents); 
print Dumper($hashTable); 

JSON庫可在http://metacpan.org/pod/JSON找到。

你的輸出應該是這個樣子

$VAR1 = { 'devices' => { '@size' => '3', 'device' => [ { '@key' => '8519', 'name' => 'sri-asr1000', 'ipAddr' => '172.168.2.1' }, { '@key' => '1994', 'name' => 'sp-asr9k', 'ipAddr' => '172.17.41.5' }, { '@key' => '1998', 'name' => 'sr-nex10k', 'ipAddr' => '115.145.9.14' } ] } };

從這一點,你可以很容易地訪問表中的每個元素並打印值。