Perl的Json数组中放入哈希数组

标题Perl的Json数组中放入哈希数组

{
  "b": "0",
  "c": 1,
  "d": [
      {
        "e": "123345",
        "f": "456567"
      },
      {
        "e": "123345",
        "f": "456567"
      }
  ]
}

类似于这种的,有两种方法:

#!/usr/local/bin/perl
use strict;
use JSON;

my %out= (
	"b"=>"0",
	"c"=>1,
	"d"=>[]
);
my %insert = (
	"e"=>"",
	"f"=>""
);
my @arr = ();

################主要是这个地方 start##################

第一种:  	for(my $ii = 0; $ii < 5; $ii++){
				$insert{"e"} = "12" . $ii . "34";
				$insert{"f"} = "56" . $ii . "78";
				push @arr,({%insert});  #将哈希放入数组中
			}
			$resultData{"d"} = \@arr;

		        或者

第二种:  	for(my $ii = 0; $ii < 5; $ii++){
				$insert{"e"} = "12" . $ii . "34";
				$insert{"f"} = "56" . $ii . "78";
				push @arr,({%insert});  #将哈希放入数组中
			}
			my $temp = @out{'d'};
		 	push @$temp, @arr;	#切记此处的 @arr不要再加一层 [] 了

				或者

第三种:   #(使用这种方法,循环外的那个%insert 不需要声明)
			for(my $ii = 0; $ii < 5; $ii++){
				my $insert = {	#(此处位大括号)
					"e"=>"",
					"f"=>""
				};
				$insert->{"e"} = "12" . $ii . "34";
				$insert->{"f"} = "56" . $ii . "78";
				push @arr, $insert; #依旧是将哈希放入数组
			}
			$resultData{"d"} = \@arr;

################主要是这个地方 end  ##################
my $json = JSON->new->allow_nonref;
$json->canonical(1);
my $result = $json->encode(\%resultData);

print "$result\n";

你可能感兴趣的:(Perl,perl,json)