[英]parse JSON from PERL
我從服務器收到json格式的響應。 我使用Data :: Dumper分解它,給
$VAR1 = {
'StatementsResponse' => {
'ResponceRef' => '',
'statements' => [
{
'J0115AOU3H' => {
'BPL_DAT_KL' => '10.01.2019',
'AUT_MY' => '10'
}
},
{
'J0115A47J7' => {
'AUT_MY' => '11',
'BPL_DAT_KL' => '11.01.2019'
}
},
{
'J0115AVR8L' => {
'BPL_DAT_KL' => '12.01.2019',
'AUT_MY' => '12'
}
},
{
'J0115AVBGS' => {
'AUT_MY' => '13',
'BPL_DAT_KL' => '13.01.2019'
}
}
]
}
};
如何獲取值BPL_DAT_KL
和AUT_MY
,只要J0115AOU3H
是在不斷的變化,並在輸出的時候不知道一個動態值? 如果我知道值,那么可以通過下面的代碼獲取值,但是如果我不知道該怎么辦?
use JSON;
use JSON::XS;
my $json = `cat /home/json.log`;
my $data=decode_json($json);
use Data::Dumper;
print Dumper($data);
my $aref = $data->{'StatementsResponse'}->{'statements'};
for my $element (@$aref) {
print $element->{J0115AOU3H}->{BPL_SUM_E};
}
my $statements = $data->{StatementsResponse}{statements};
for my $statement (@$statements) {
for my $statement_id (keys(%$statement)) {
my $statement_data = $statement->{$statement_id};
say $statement_data->{BPL_SUM_E};
}
}
如果我們只能依靠僅具有一個元素的哈希,那么您的格式就很奇怪,上面的內容可以簡化為以下內容:
my $statements = $data->{StatementsResponse}{statements};
for my $statement (@$statements) {
my ($statement_id) = keys(%$statement);
my $statement_data = $statement->{$statement_id};
say $statement_data->{BPL_SUM_E};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.