我有一个打印的JSON
{"d":{"success":true,"drivers":[{"FIRST_NAME":"JOHN","LAST_NAME":"SMITH"},{"FIRST_NAME":"JANE","LAST_NAME":"DOE"}]}}
名称会根据数据库中的内容而变化。对于在JSON中重现的每个结果,我需要以这种格式推送它:
push(@$dummy_data, {'name' => 'testname', 'key' => 'somekey-1234'});
push(@$dummy_data, {'name' => 'testname2', 'key' => 'somekey-5678'});
因此,对于此示例,将使用John Smith代替testname,使用Jane代替testname2 我怎么做这个,所以json中的每个名字和名字都按上面的格式推送?
答案 0 :(得分:1)
use strict; use warnings;
use JSON::XS;
use Data::Dumper;
# creating reference to a void ARRAY
my $dummy_data = [];
# creating $json string
my $json = '{"d":{"success":true,"drivers":[{"FIRST_NAME":"JOHN","LAST_NAME":"SMITH"},{"FIRST_NAME":"JANE","LAST_NAME":"DOE"}]}}';
# converting JSON -> Perl data structure
my $perl_hash = decode_json $json;
# feeding $dummy_data ARRAY ref with a HASH
push @$dummy_data, {
name => $perl_hash->{d}->{drivers}->[0]->{FIRST_NAME},
key => $perl_hash->{d}->{drivers}->[1]->{FIRST_NAME}
};
# print what we have finally
print Dumper $dummy_data;
$VAR1 = [
{
'name' => 'JOHN',
'key' => 'JANE'
}
];