【发布时间】:2020-07-21 18:43:27
【问题描述】:
我有一个 json 文件,我正在使用 perl JSON 模块处理它。
处理完后,我想在其中插入一些内容。
这是我的输入 json 文件:
{
"sequence" : [
{
"type" : "event",
"attribute" : {
"contentText" : "Test Content",
"contentNumber" : "11"
}
}
],
"current" : 0,
"next" : 1
}
下面是我的脚本:
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
use Data::Dumper;
my $needed = 2;
my $filename = "test_file.json";
my $json_text = do {
open(my $json_fh, "<:encoding(UTF-8)", $filename)
or die("Can't open \$filename\": $!\n");
local $/;
<$json_fh>
};
my $json = JSON->new;
my $data = $json->decode($json_text);
my $aref = $data->{sequence};
print Dumper($aref);
my $number;
for my $element (@$aref) {
$number = $element->{attribute}->{contentNumber}."\n";
}
print "Number:$number\n";
my $total = $number + $needed;
foreach my $each_number ($number+1..$total){
print $each_number."\n";
}
print Dumper $data;
所以我在这里需要的是从给定的 json 文件中获取 contentNumber 并将值递增 1 直到提到 $needed 并形成一个新的 json 文件。
最后它应该形成 JSON 文件,其内容应如下所示:
无论$needed变量值是什么,很多时候json应该形成包括初始数据在内的数据。
{
"sequence" : [
{
"type" : "event",
"attribute" : {
"contentText" : "Test Content",
"contentNumber" : "11"
}
},
{
"type" : "event",
"attribute" : {
"contentText" : "Test Content",
"contentNumber" : "12"
}
},
{
"type" : "event",
"attribute" : {
"contentText" : "Test Content",
"contentNumber" : "13"
}
}
],
"current" : 0,
"next" : 1
}
我想在foreach 循环中推送数据。但不知道我们如何将它放在数据对象中,它应该给我一个 json 格式的输出。
【问题讨论】: