操纵JSON以纠正perl中的格式

时间:2013-02-20 16:15:19

标签: json perl

我有一个打印的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中的每个名字和名字都按上面的格式推送?

1 个答案:

答案 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'
          }
        ];