2013-06-27 21 views
2

我是Perl新手,需要編碼爲JSON。這是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代碼嗎?

+1

請提供更多的細節。你有什麼問題與Perl代碼? – Barmar

+0

應該被編碼爲JSON的perl結構 –

+1

你有什麼問題?它應該是數組和散列,在所有Perl腳本中都是通用的。 – Barmar

回答

2

Perl JSON模塊將採用複雜的Perl數據結構並將其編碼爲基於JSON的基於文本的結構。

你說我是新來的Perl。正如您可能已經發現的那樣,Perl的基本數據結構只涉及單個數據位。 A 標量$foo)編碼單個數據片段。 數組@foo)和散列(%foo)編碼單個數據位的列表。這些結構都不能捕獲JSON(或XML或YAML或Marshal)數據結構的複雜性。

然而,Perl有一些所謂的參考,讓你擁有的東西,如哈希散列陣列陣列哈希陣列等的您需要了解這些複雜的結構,以便能夠編碼和解碼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" } 
     ] 
    } 
} 
+0

非常感謝,這正是我想要的 –

+0

我很抱歉,你能幫我添加一個字段項目作爲總結,它就像這樣:'「FixVerion」:[ {「id」=「1233」}]' –

+0

請參閱上文。我在帖子中進行了修改。 –

0

查看CPAN上的Perl JSON module。這將處理所有的編碼/解碼,你只需要適當地管理你的Perl結構。

+0

問題是在處理Perl結構 –