如何在perl中将对象附加到JSON数组中?

如何在perl中将对象附加到JSON数组中?,json,perl,Json,Perl,我试图将该对象附加到json数组中,但结果显示为不同的格式。如果有人能告诉我正确的方法,我将不胜感激 这是我的密码: sub create_release_text_file { my $result_path = shift; my %hshReleasebuild ; my @Releasebuild ; my $json = JSON->new->allow_nonref; my $relea

我试图将该对象附加到json数组中,但结果显示为不同的格式。如果有人能告诉我正确的方法,我将不胜感激

这是我的密码:

sub create_release_text_file
{

        my $result_path = shift;
        my %hshReleasebuild ;
        my @Releasebuild ;


        my $json = JSON->new->allow_nonref;
        my $release_path =  File::Spec->catfile($result_path, "release.txt");


        $hshReleasebuild{"Build"} = $ARG_BUILD;         
        $hshReleasebuild{"Release"} = $ARG_RELEASE;

        push(@Releasebuild,\%hshReleasebuild);

        my $json_releasebuild = $json->encode(\@Releasebuild ); 




        open RELEASE_FILE, ">>", $release_path or die $!;   
        print RELEASE_FILE $json_releasebuild;
        close RELEASE_FILE; 


}
结果表明:

[{"Release":"11.0","Build":"135"}][{"Release":"12.0","Build":"120"}] ...
但我想得到的结果是:

[{"Release":"11.0","Build":"135"},{"Release":"12.0","Build":"120"}, ...]

要添加到JSON文件中表示的数组,您需要首先实际获取该数组

my $json = do { local $/; <> };
my $releases = decode_json($json);
push @$releases, \%hshReleasebuild;
print encode_json($releases);
my$json=do{local$/;};
my$releases=decode_json($json);
推送@$releases,\%hshReleasebuild;
打印encode_json($releases);

(处理STDIN和STDOUT之外的文件句柄。)

所以在调用
$json->encode()
之前修改
@ReleaseBuild
的内容。你有什么版本的
json
呢?@mob我正在使用json-support\u by\u pp;如果你要打开
>
@AndyLester的文件,你永远不会得到正确的结果,你能告诉我怎么走吗?谢谢,谢谢ikegami,你太棒了!当我在每个对象中循环时,你能告诉我,我想附加一个额外的键值对吗?@Spongekyle Hashpants,
$releases
是对“对象”(散列)引用数组的引用,因此,
$\uuo->{foo}=$bar表示@$releases哇,太简单了。非常感谢!