我有一个包含3个字段的表,我查询该字段并将值放入JSON中。该表具有应用程序名称和应用程序ID的主机名。我目前有一个输出以下json字符串的perl脚本。
[
{
"app_id" : "1234","app_name" : "Managed File Transfer","ci_name" : "hosta7"
},{
"app_name" : "Patrtol","app_id" : "1235",{
"app_id" : "1236","app_name" : "RELATIONAL DATA WAREHOUSE",{
"ci_name" : "hosta7","app_id" : "1237","app_name" : "Managed File Transfer"
},{
"app_id" : "1238","app_name" : "Initio Application",{
"app_id" : "1239","app_name" : "Data Warehouse Operations Infrastructure",{
"app_id" : "2345","app_name" : "Tableou","ci_name" : "hostb"
}
]
我想要像下面这样的结果json字符串,如果ci_name已经存在,我希望将新项添加到JSON字符串中主机的当前条目中。所以本质上来说,我想要这个JSON字符串
{
"hosts" : [{
"hosta" :[
{
"app_id": "1234","app_name": "Managed File Transfer"
},{
"app_id": "1235","app_name": "Patrol"
},{
"app_id": "1236","app_name": "RELATIONAL DATA WAREHOUSE"
},{
"app_id": "1237",{
"app_id": "1238","app_name": "Initio Application"
},{
"app_id": "1239","app_name": "Data Warehouse Operations Infrastructure"
}
],"hostb" : [
{
"app_id": "2345","app_name": "Tableou"
}
]
}]
}
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
my $hosts = [
{
'app_id' => '1234','app_name' => 'Managed File Transfer','ci_name' => 'hosta7'
},{
'app_name' => 'Patrtol','app_id' => '1235',{
'app_id' => '1236','app_name' => 'RELATIONAL DATA WAREHOUSE',{
'ci_name' => 'hosta7','app_id' => '1237','app_name' => 'Managed File Transfer'
},{
'app_id' => '1238','app_name' => 'Initio Application',{
'app_id' => '1239','app_name' => 'Data Warehouse Operations Infrastructure',{
'app_id' => '2345','app_name' => 'Tableou','ci_name' => 'hostb'
}
];
my $output;
foreach my $row (@$hosts) {
push @$output,$row;
}
my $json = new JSON;
$json->pretty(1);
print $json->encode($output);