(Perlの上の)私のカスタムコードは、ブロック間のカンマが欠落し、次の間違ったJSONを与える:破損JSONエンコーディング(missignカンマ)
{
"data": [{
"{#LOGFILEPATH}": "/tmp/QRZ2007.tcserverlogs",
"{#LOGFILE}": "QRZ2007"
} **missing comma** {
"{#LOGFILE}": "ARZ2007",
"{#LOGFILEPATH}": "/tmp/ARZ2007.tcserverlogs"
}]
}
私のひどいコード:
#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
use utf8;
use JSON;
binmode STDOUT, ":utf8";
my $dir = $ARGV[0];
my $json = JSON->new->utf8->space_after;
opendir(DIR, $dir) or die $!;
print '{"data": [';
while (my $file = readdir(DIR)) {
next unless (-f "$dir/$file");
next unless ($file =~ m/\.tcserverlogs$/);
my $fullPath = "$dir/$file";
my $filenameshort = basename($file, ".tcserverlogs");
my $data_to_json = {"{#LOGFILEPATH}"=>$fullPath,"{#LOGFILE}"=>$filenameshort};
my $data_to_json = {"{#LOGFILEPATH}"=>$fullPath,"{#LOGFILE}"=>$filenameshort};
print $json->encode($data_to_json);
}
print ']}'."\n";
closedir(DIR);
exit 0;
親愛なるチームIプログラマではありません、どのようにそれを修正することをお考えください、ありがとう!
コードは問題ありません。コンマは印刷されていないので、コンマはありません。 JSONモジュールを使用する予定はありません。 1つのデータ構造を作成し、一度にエンコードする必要があります。 JSONモジュールはステップバイステップ変換をサポートしていません。また、 '$ data_to_json'を2回宣言します。あなたのプログラムはコンパイルされません。 – simbabque