Я пытаюсь создать подпрограмму для добавления новых значений в json-файл, но, похоже, не может правильно помещать вещи. В конце концов я хотел бы иметь возможность строить эти данные. в идеале, каждый раз, когда выполняется эта процедура, к массиву добавляются новейшие данные, переданные в качестве аргумента, поэтому они могут быть построены.Нужно добавить новые данные в массив JSON в perl
Вот что у меня есть.
# Subroutine to push CPU data to customer/device json file
sub push_json_data
{
my $json = JSON->new;
#get these as arguements
my $json_cpu_user = $_[0];
my $json_cpu_system = $_[1];
my $json_cpu_idle = $_[2];
my $filename = 'data/custid_devid.json';
#open file for read/write results
#open (JSONFILE, "+>$filename");
#print JSONFILE "$json_data";
#close (JSONFILE);
{
local $/; #Enable 'slurp' mode
open my $fh, "<", "$filename";
$json = <$fh>;
close $fh;
}
my $data = decode_json($json);
my $newdata = {user=>"$json_cpu_user",system=>"$json_cpu_system",idle=>"$json_cpu_idle"};
my $previousdata = $data->{'CPU'};
my $newjsondata = {"CPU"=>[$previousdata,$newdata]};
print Dumper $newjsondata;
open my $fh, ">", "data/custid_devid.json";
print $fh encode_json($newjsondata);
close $fh;
};
что выдает что-то вроде этого ...
$VAR1 = {
'CPU' => [
[
[
{
'system' => '0',
'user' => '1',
'idle' => '97'
}
],
{
'system' => '0',
'user' => '0',
'idle' => '98'
}
],
{
'system' => '0',
'user' => '0',
'idle' => '98'
}
]
};
Я получаю дополнительный массив для каждого значения, как я могу обойти это?
показать, как выглядит исходный файл с помощью только одной точки данных (или нуля или обоих)? – ysth