从Perl-JSON模块编码的输出中省略未定义的键

时间:2013-01-08 23:26:22

标签: json perl encoding null decoding

我正在使用Perl JSON模块将一些嵌套的Perl对象和数组引用(从解码JSON输入获得)编码为漂亮的JSON输出。

到目前为止,这么好。但是,我有一个我想从参考输入中删除的密钥:

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

看起来这会在我的输出中呈现为null JSON元素:

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

我更愿意完全过滤掉它。我想我可以编写一个awk脚本或类似的东西来手动执行此操作,但我希望在Perl JSON模块中有更简洁的方法。这可行吗?

1 个答案:

答案 0 :(得分:4)

不应将哈希元素设置为undef,而应将其完全删除。

使用

delete $originalJSON->{myObsoleteKey}

没有必要先检查它是否存在:如果没有这样的元素,那么什么都不会发生。