我见过的Perl JSON :: XS模块的所有文档和示例都使用OO接口,例如
print JSON::XS->new->ascii()->pretty()->canonical()->encode($in);
但是我不一定每次都想要所有这些选项,我希望像使用基本JSON模块一样,将它们发送到哈希中,例如
print to_json($in, { canonical => 1, pretty => 1, ascii => 1 } );
发送到该encode_json的结果
Too many arguments for JSON::XS::encode_json
有什么办法吗?
JSON的to_json
如果已安装,则使用JSON :: XS,因此,如果要使用to_json
的JSON::XS
版本,只需使用JSON中的一个即可。
或者,您可以重新创建to_json
。
sub to_json
my $encoder = JSON::XS->new();
if (@_ > 1) {
my $opts = $_[1];
for my $method (keys %$opts) {
$encoder->$_( $opts->{$_} ) for keys %$opts;
}
}
return $encoder->encode($_[0]);
}