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" }
]
}
}