Perl JSON模块将采用复杂的 Perl 数据结构并将其编码为基于 JSON 文本的结构。
你说我是 Perl 的新手。正如您可能已经发现的那样,Perl 的基本数据结构只涉及单个数据位。标量( $foo
) 对单个数据进行编码。数组( @foo
) 和散列 ( %foo
) 对单个数据位的列表进行编码。这些结构都不能捕捉 JSON(或 XML、YAML 或 Marshal)数据结构的复杂性。
但是,Perl 有一些称为引用的东西,它允许您拥有诸如哈希的哈希或数组的哈希或数组的哈希等。您需要了解这些复杂的结构才能对 JSON 结构进行编码和解码。
幸运的是,Perl 在其 Perldocs 的参考资料中有一个内置教程。如果您不熟悉参考资料,请阅读教程。然后,您可以开始对我们的 JSON 结构进行编码。
这是一个对帖子中的确切结构进行编码的程序:
use warnings;
use strict;
use feature qw(say);
use JSON;
use Data::Dumper;
my $json_data_ref = {};
$json_data_ref->{fields}->{project}->{key} = "ABC";
$json_data_ref->{fields}->{summary} = "REST TESTING";
$json_data_ref->{fields}->{description} = "Creating of an issue project keys and issue "
. "type names using the REST API";
$json_data_ref->{fields}->{issuetype}->{name} = "Bug";
$json_data_ref->{fields}->{fixedVersions}->[0]->{id} = "1223";
my $json_text = to_json ( $json_data_ref, { pretty => 1 } );
say $json_text;
输出是:
{
"fields" : {
"summary" : "REST TESTING",
"project" : {
"key" : "ABC"
},
"description" : "Creating of an issue project keys and issue type names using the REST API",
"issuetype" : {
"name" : "Bug"
}
"FixedVersions" : [
{ "id: "1223" }
]
}
}