2015-08-24 38 views
1
package Emp; 
sub new 
{ 
    my $class = shift; 
    my $self = { 
     OrderID => shift, 
     OrderDate => shift, 
     CustomerID => shift, 
     ShipName => shift, 
     Freight => shift, 
    }; 
    bless $self, $class; 
    return $self; 
} 
sub TO_JSON { return { %{ shift() } }; } 

package main; 
use JSON; 

my $JSON = JSON->new->utf8; 
$JSON->convert_blessed(1); 

$e = new Emp("10248", "1996-07-04", "WILMK","Vins","10"); 
$json = $JSON->encode($e); 
print "$json\n";  

我嘗試使用上面的示例將我的String轉換爲JSON。輸出是象下面這樣:Json的Perl字符串

{"Freight":"10","OrderDate":"1996-07-04","CustomerID":"WILMK","OrderID":"10248","ShipName":"Vins"} 

我在哪裏可以改變,如果我想我的JSON是象下面這樣:

{ 
    "rows":[ 
     {"OrderID":"10248","OrderDate":"1996-07-04","CustomerID":"WILMK","ShipName":"Vins et alcools Chevalier","Freight":"32.3800"},  
     {"OrderID":"10276","OrderDate":"1996-08-08","CustomerID":"TORTU","ShipName":"Tortuga Restaurante","Freight":"13.8400"}, 
     {"OrderID":"10277","OrderDate":"1996-08-09","CustomerID":"MORGK","ShipName":"Morgenstern Gesundkost","Freight":"125.7700"} 
    ] 
} 

任何意見或引用鏈接表示高度讚賞。

回答

3

創建你正在尋找的數據結構,然後調用JSON->編碼

在你主要包,請嘗試以下操作:

use JSON; 

my $JSON = JSON->new->utf8; 
$JSON->convert_blessed(1); 

my $data = { rows => [] }; 
push @{$data->{rows}}, new Emp("10248", "1996-07-04", "WILMK","Vins","32"); 
push @{$data->{rows}}, new Emp("10276", "1996-08-08", "TORTU","Tortuga","13"); 
push @{$data->{rows}}, new Emp("10277", "1996-08-09", "MORGK","Morgenstern","125"); 

$json = $JSON->encode($data); 
print "$json\n"; 

輸出:

{"rows":[{"Freight":"32","OrderDate":"1996-07-04","CustomerID":"WILMK","OrderID":"10248","ShipName":"Vins"}, 
{"Freight":"13","OrderDate":"1996-08-08","CustomerID":"TORTU","OrderID":"10276","ShipName":"Tortuga"}, 
{"Freight":"125","OrderDate":"1996-08-09","CustomerID":"MORGK","OrderID":"10277","ShipName":"Morgenstern"}]}