我的目标是生成以下json:
{
"nervous" : {
{ "id" : 1 },
{ "id" : 2 },
{ "id" : 3}
}
}
我知道哈希不会多次接受同名的密钥,但是有没有办法生成上面的json?目前我正在做以下事情:
use JSON;
sub json_test {
my %moods;
$moods{'happy'} = "am happy";
$moods{'excited'} = "am excited";
$moods{'nervous'}{'id'} = 2;
$moods{'nervous'}{'id'} = 3;
$moods{'nervous'}{'id'} = 4;
return to_json( \%moods, {utf8 => 1, pretty => 1});
}
my $return = json_test();
print $return;
我很确定它是有效的json数据,因为每个id都在它自己的对象中。有人可以建议,我对Perl完全不熟悉(但我很高兴能够学习它)
答案 0 :(得分:6)
您的JSON无效。对象{…}
需要键值对。您可能希望改为使用数组[…]
:
{
"nervous" : [
{ "id" : 1 },
{ "id" : 2 },
{ "id" : 3}
]
}
可以由Perl代码生成
my $moods = {
nervous => [
{ id => 1 },
{ id => 2 },
{ id => 3}
]
};
to_json($moods, { ut8 =>1, pretty => 1 });
或
my %moods;
$moods{'happy'} = "am happy";
$moods{'excited'} = "am excited";
push @{ $moods{nervous} }, { id => 2 };
push @{ $moods{nervous} }, { id => 3 };
push @{ $moods{nervous} }, { id => 4 };