Perl以特定格式创建JSON字符串

我有一个包含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);
inlove2100 回答:Perl以特定格式创建JSON字符串

您不想直接按入,您想按从ci_name获取的键,而只想复制应用程序ID和名称。

for my $element (@$hosts) {
    push @{ $output->{ $element->{ci_name} } },{ map { $_ => $element->{$_} } qw( app_id app_name ) };
}
,

代码可能类似于以下代码段

module.exports = env => {
    return {
        entry: {
            index: entryString.replace('{entryClass}',env.platform).replace('{game}',env.game ? env.game : ''),another: env.production ? spinePluginProd : spinePlugin,another: env.production ? phaserProd : phaser,},watch: env.watch == 'true',optimization: {
            minimizer: env.production ? [terserPlugin] : [],output: {
            pathinfo: true,path: path.resolve(localDirectory,'dist'),publicPath: './',filename: '[name].bundle.js',optimization: {
            splitChunks: {
                chunks: 'all',plugins: getPlugins(env.platform,env.watch),module: {
            rules: getLoaders(env.platform,env.game),node: {
            fs: 'empty',net: 'empty',tls: 'empty'
        },resolve: {
            extensions: ['.ts','.js'],alias: {
                'phaser': env.production ? phaserProd : phaser,'spinePlugin': env.production ? spinePluginProd : spinePlugin,// 'spine': spine
            }
        }
    }
}
本文链接:https://www.f2er.com/3169697.html

大家都在问