我有一个像这样的 csv 文件,是从 salesforce 下载的:
"ID","Name","Email"
"1","AAAA","AA@AAA.COM"
"1","AAAA","BB@AAA.COM"
"1","AAAA","CC@CCC.COM"
"2","NNN","NN@NNN.NN"
"3","EEE","CC@WWW.WW"
"3","EEE","DD@OOO.CV"
我需要将该文件转换为 json,如下所示:
[
{
"Id": "1",
"Name": "AAAA",
"email": "AA@AAA.COM" ,"BB@AAA.COM","CC@CCC.COM"
},
{
"Id": "2",
"Name": "NNN",
"email": "NN@NNN.NN"
},
{
"Id": "3",
"Name": "EEE",
"email": "CC@WWW.WW" ,"DD@OOO.CV"
},
]
我需要确定哪些行具有相同的 ID 和名称,然后将电子邮件连接到同一行。输出应该是一个 json 文件。
最佳答案
Perl 来救援:
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
use Text::CSV_XS qw{ csv };
my %by_id;
my $csv = 'Text::CSV_XS'->new({binary => 1});
open my $fh, '<', shift or die $!;
$csv->getline($fh); # Skip header
while (my $row = $csv->getline($fh)) {
my ($id, $name, $email) = @$row;
$by_id{$id}{Id} = $id;
$by_id{$id}{Name} = $name;
push @{ $by_id{$id}{email} }, $email;
}
my $json = 'JSON'->new->canonical;
print $json->encode([map $by_id{$_}, sort { $a <=> $b } keys %by_id]);
关于json - linux下csv文件转json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48571206/