2013-08-26 35 views
3

我想在Perl中創建一個JSON字符串輸出這樣的一個JSON字符串:使用這個例子建立在Perl

{"d":{"success":false, "error":"key is required"}} 

我已經找到了如何做到這一點沒有「d」:

my %rec_hash = ('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); 
my $json = encode_json \%rec_hash; 
print "$json\n"; 

但不知道什麼,我假設有額外的水平做

回答

16

你需要的是一個hash reference

use strict; 
use warnings; 
use JSON; 

my $json = JSON->new; 

my $data_to_json = {d=>{success=>JSON::false,error=>"key is required"}}; 

print $json->encode($data_to_json) . "\n"; 

的輸出是:

{"d":{"success":false,"error":"key is required"}} 

使用注意事項的JSON::false表示一個值,該值的JSON模塊將正確地轉換爲false作爲JSON值。

+1

哦,這很簡單,我似乎一直在錯誤的方式。謝謝。 – BluGeni

+2

@BluGeni - 沒問題。如果你還沒有,我會考慮瀏覽'perldoc perlref'(在上面的答案中鏈接)。 Perl最令人沮喪的特性是數據結構自動變平,除非你使用引用(除了沒有用,除了嵌套數據結構和傳遞引用的解決方法之外,它們都是指針)。 – 2013-08-26 18:36:05

+1

@JackManey「......有點像指針,除了**,在他們的腳下拍攝自己的腳很困難**)。修正了這個問題。 –