我正在使用以JSON格式打印输出的Web服务,如下所示,
{
'message' => '',
'data' => [
{
'name' => 'Lee calls',
'empid' => '1289328',
'desc_id' => 'descl23423..23431'
},
{
'name' => 'Lee calls',
'empid' => '23431223',
'desc_id' => 'descl23423..234324'
}
],
'status' => 'success'
};
我只需要转换数据'项目值为CSV格式。需要的是,我必须创建将在CLI(命令行界面)或Linux终端中执行的perl文件。因此,perl将从Webservice中提取内容,并且必须将JSON输出转换为CSV格式。
你能建议我这个怎么办?
答案 0 :(得分:1)
使用JSON将JSON字符串读入Perl数据结构。然后,使用Text::CSV_XS以CSV格式创建输出:
#!/usr/bin/perl
use warnings;
use strict;
use JSON;
use Text::CSV_XS;
my $json = '[ {
"name" : "Lee calls",
"empid" : "1289328",
"desc_id" : "descl23423..23431"
},
{
"name" : "Lee calls",
"empid" : "23431223",
"desc_id" : "descl23423..234324"
} ]';
my $struct = decode_json($json);
my $csv = 'Text::CSV_XS'->new({ binary => 1, eol => "\n" });
open my $OUT, '>:encoding(UTF-8)', 'output.csv' or die $!;
$csv->print($OUT, [ @$_{qw{ name empid desc_id }} ]) for @$struct;
close $OUT or die $!;