2013-01-08 57 views
0

我使用Perl JSON模塊將一些嵌套的Perl對象和數組引用(從解碼JSON輸入獲得)編碼爲漂亮打印的JSON輸出。從Perl-JSON模塊編碼的輸出中排除未取消的鍵

到目前爲止,這麼好。但是,我有我想從我的參考輸入刪除鍵:

if (defined $originalJSON->{'myObsoleteKey'}) { 
    undef $originalJSON->{'myObsoleteKey'}; 
} 

它看起來像這樣得到渲染成我的輸出null JSON元素:

{ 
    ... 
    "myObsoleteKey" : null, 
    ... 
} 

我會寧願完全過濾掉。我想我可以編寫一個awk腳本或類似的手動執行此操作,但我希望有一個更清晰的方式在Perl JSON模塊中執行此操作。這是可行的嗎?

回答

4

不應將散列元素設置爲undef,應該將其完全刪除。

使用

delete $originalJSON->{myObsoleteKey} 

沒有必要首先要檢查它是否存在:如果不存在這樣的元素,則什麼也不會發生。

+0

這似乎不適用於我; (過時的)鍵保留在JSON輸出中。 –

+0

請顯示您的修改代碼。你可能拼錯了鑰匙? – Borodin

+0

我認爲關鍵存在的檢查會將其檢測出來。如果我刪除了完整性檢查,那麼密鑰將被刪除。我擔心沒有檢查密鑰是否存在,這讓我想知道爲什麼當我刪除完整性檢查時這是有效的。 –