Я использую Perl-скрипт для преобразования из JSON в CSV.sampple json выглядит следующим образом:
[{"id":100,
"primary-codes":["E0181V00","E0226V00"],
"substitute-codes":["E0181D00","E0226100"],
"fk-id":2294}]
, а код perl, который я использовал для преобразования этого в csv:
#!/usr/bin/perl
use utf8;
use warnings;
use strict;
use lib '.';
use JSON::PP qw(decode_json);
my $json;
{
local $/;
open my $fh, '<', 'output_array.json' or die $!;
$json = <$fh>;
}
my $perl = decode_json $json;
my $filename = 'sample.csv';
open(my $fh, '>>:encoding(UTF-8)', $filename) or die "Could not open file '$filename' $!";
say $fh 'nk_id,prim_cd,sub_cd,fk_id';
for (@$perl){
my $nk_id = '"' . $_->{"id"} . '"';
my $prim_cd= '"' . $_->{"primary-codes"} . '"';
my $sub_cd= '"' . $_->{"substitute-codes"} . '"';
my $fk_id= '"' . $_->{"fk-id"} . '"';
say $fh "$nk_id," . "$prim_cd," . "$sub_cd," . "$fk_id";
}
close $fh;
Вывод, который я получаю, выглядит следующим образом:
nk_id,prim_cd,sub_cd,fk_id
100,ARRAY(0x201549f8),ARRAY(0x20154a88),2294
но я хочу, чтобы это было,
100,"E0181V00,E0226V00","E0181D00,E0226100",2294
Я пытался использовать,
my $prim_cd = '"' . join ",", @{ $perl->[0]{"primary-codes"} } . '"';
Но он просто возвращает количество, а не элементы.
Пожалуйста, помогите мне с этим вопросом.
Спасибо!