2

我是 Perl 的新手,我需要编码为 JSON。这是 JSON 代码:

{
    "fields": {
        "project": {
            "key": "ABC"
        },
        "summary": "REST TESTING",
        "description": "Creating of an issue using project keys and issue type names using the REST API",
        "issuetype": {
            "name": "Bug"
        }
    }
}

任何人都可以帮助我处理 Perl 代码吗?

4

2 回答 2

3

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" }
       ]
   }
}
于 2013-06-27T12:28:46.070 回答
0

查看 CPAN 上的PerlJSON模块。这将处理所有的编码/解码,你只需要适当地管理你的 Perl 结构。

于 2013-06-27T11:24:44.610 回答