如何以正确的格式将更多 JSON 条目添加到文件中?
How to add more JSON entries into file with right format?
我正在尝试通过给定输入添加到 JSON,但输出格式与预期不同。请建议此代码所需的任何更改。为了测试,我通过 $data_to_json
传递一个条目,但我需要将许多类似的行传递给 JSON 文件。
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use JSON;
my $json = JSON->new;
my %data;
my $data_to_json = [ {data=>{user=>"myuser",status=>"ok"}, "host"=>"localhost","ver"=>"1.0", "remote"=> [{"host"=>"remotehost","ver"=>"1.0"}] } ];
$data{data} = $data_to_json;
my $convert = JSON->new->pretty;
print $convert->encode(\%data);
它 returns 以下输出不是预期的:
{
"data" : [
{
"ver" : "1.0",
"data" : {
"status" : "ok",
"user" : "myuser"
},
"remote" : [
{
"ver" : "1.0",
"host" : "remotehost"
}
],
"host" : "localhost"
}
]
}
我正在查看以下结果格式(有不止一条像下面这样的记录我需要添加到 JSON)
[
{
"data":{
"user": "myuser",
"status": "ok"
},
"host": "localhost",
"ver": "1.0",
"remote": [
{
"host": "remotehost",
"ver": "1.0",
}
]
},
{
"data":{
"user": "myuser",
"status": "ok"
},
"host": "localhost",
"ver": "2.0",
"remote": [
{
"host": "remotehost",
"ver": "2.0",
}
]
}
]
外部结构不是JSON说法中的对象(或Perl 说法中的散列),而是数组。使用 push 向数组添加元素。另外,数据也可以简化:不需要将object/hash存储在数组中,直接使用object/hash即可。
my @data;
my $data_to_json = { data => { user => 'myuser', status => 'ok' },
host => 'localhost',
ver => '1.0',
remote => [ { host => 'remotehost', ver => '1.0' } ] };
push @data, $data_to_json;
my $convert = JSON->new->pretty;
print $convert->encode(\@data);
我正在尝试通过给定输入添加到 JSON,但输出格式与预期不同。请建议此代码所需的任何更改。为了测试,我通过 $data_to_json
传递一个条目,但我需要将许多类似的行传递给 JSON 文件。
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use JSON;
my $json = JSON->new;
my %data;
my $data_to_json = [ {data=>{user=>"myuser",status=>"ok"}, "host"=>"localhost","ver"=>"1.0", "remote"=> [{"host"=>"remotehost","ver"=>"1.0"}] } ];
$data{data} = $data_to_json;
my $convert = JSON->new->pretty;
print $convert->encode(\%data);
它 returns 以下输出不是预期的:
{
"data" : [
{
"ver" : "1.0",
"data" : {
"status" : "ok",
"user" : "myuser"
},
"remote" : [
{
"ver" : "1.0",
"host" : "remotehost"
}
],
"host" : "localhost"
}
]
}
我正在查看以下结果格式(有不止一条像下面这样的记录我需要添加到 JSON)
[
{
"data":{
"user": "myuser",
"status": "ok"
},
"host": "localhost",
"ver": "1.0",
"remote": [
{
"host": "remotehost",
"ver": "1.0",
}
]
},
{
"data":{
"user": "myuser",
"status": "ok"
},
"host": "localhost",
"ver": "2.0",
"remote": [
{
"host": "remotehost",
"ver": "2.0",
}
]
}
]
外部结构不是JSON说法中的对象(或Perl 说法中的散列),而是数组。使用 push 向数组添加元素。另外,数据也可以简化:不需要将object/hash存储在数组中,直接使用object/hash即可。
my @data;
my $data_to_json = { data => { user => 'myuser', status => 'ok' },
host => 'localhost',
ver => '1.0',
remote => [ { host => 'remotehost', ver => '1.0' } ] };
push @data, $data_to_json;
my $convert = JSON->new->pretty;
print $convert->encode(\@data);