2015-10-20 190 views
1

我是一個Perl新手,並希望循環JSON數據。
這是我的代碼:Perl JSON解碼和打印鍵從鍵值對

use JSON::XS; 
my $jsonxx = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
my $text = decode_json($jsonxx); 
foreach my $key(keys %$text) { 
    print "$key\n"; 
} 

和輸出是:

e 
c 
a 
b 
d 

但我想給出的鍵值對的順序輸出。

預期輸出:

a 
b 
c 
d 
e 

任何人都可以請幫助?

+3

這是不可能的。根據定義,JSON對象/ Perl哈希是無序的。不過,你可以對鍵進行排序,這仍然可以讓你得到你想要的。如果你需要一個有序的集合,一個數組就是你想要的。 –

+1

(如果您需要排序的輸出,請按{排序{$ h - > {$ a} <=> $ h - > {$ b}}鍵%$ h){打印「$ _ \ n」} 。排序哈希不可能 – red0ct

回答

1

我想用sort會給你預期的輸出:

foreach my $key(sort keys %$text) { 
    print "$key\n"; 
} 
+0

JSON數據可能會有所不同。其實我想要輸入的順序鍵值對添加。 –

+1

@SoorajlalKG這是一個對象。一個對象是一組無名的名稱/值對。 **沒有訂單。** –

+0

您可以通過設置'canonical'來輸出您的JSON。 – Sobrique