如何在编码后创建符合特定JSON表示的数据结构?

时间:2013-06-27 11:22:38

标签: json perl

我是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代码吗?

2 个答案:

答案 0 :(得分:3)

Perl JSON模块将采用复杂的Perl数据结构并将其编码为基于JSON文本的结构。

你说我是Perl 的新手。正如您可能已经发现的那样,Perl的基本数据结构仅涉及单个数据位。 标量$foo)对单个数据进行编码。 Arrays @foo)和散列(%foo)编码单个数据位列表。这些结构都不能捕获JSON(或XML或YAML或Marshal)数据结构的复杂性。

然而,Perl有一些称为引用的东西,允许你有哈希 哈希数组 arrays < / em>或散列 数组等等。您需要了解这些复杂的结构才能对JSON结构进行编码和解码。

幸运的是,Perl在其Perldocs的引用中有一个内置教程。如果您不熟悉参考文献,请选择Tutorial。然后,您可以开始编码我们的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" }
       ]
   }
}

答案 1 :(得分:0)

查看CPAN上的Perl JSON module。这将处理所有编码/解码,您只需要适当地管理您的Perl结构。