Perl:JSON::XS 是否可以强制将布尔值解码为 1/0?
Perl: JSON::XS Is it possible to force boolean decoding as 1/0?
包 JSON::XS 使用 JSON::XS:: 布尔对象来表示 true/false。是否可以强制将 true/false json 值解码为 1/0 Perl 数字?
#!/usr/bin/env perl
use JSON::XS;
use Data::Dumper;
my $json = decode_json(join('', <DATA>));
print Dumper $json;
__DATA__
{
"test_true": true,
"test_false": false
}
输出:
$VAR1 = {
'test_true' => bless( do{\(my $o = 1)}, 'JSON::XS::Boolean' ),
'test_false' => bless( do{\(my $o = 0)}, 'JSON::XS::Boolean' )
};
在 decode_json:
之后我想要这样的东西
$VAR1 = {
'test_true' => 1,
'test_false' => 0
};
原因:在某些情况下,很难预测 JSON::XS::Boolean 将如何使用 SOAP 序列化程序或其他序列化程序进行序列化。
没有。这些值是受祝福的对象。它们只能具有 JSON::XS::Boolean.
中允许的值
对于 Cpanel::JSON::XS,unblessed_bool
选项控制它。因此,您可以使用以下内容:
use Cpanel::JSON::XS qw( );
my $j = Cpanel::JSON::XS->new->utf8->unblessed_bool;
my $data = $j->decode( $json );
JSON::XS(目前)没有等效的选项。您将不得不遍历数据返回结构并修复它。
包 JSON::XS 使用 JSON::XS:: 布尔对象来表示 true/false。是否可以强制将 true/false json 值解码为 1/0 Perl 数字?
#!/usr/bin/env perl
use JSON::XS;
use Data::Dumper;
my $json = decode_json(join('', <DATA>));
print Dumper $json;
__DATA__
{
"test_true": true,
"test_false": false
}
输出:
$VAR1 = {
'test_true' => bless( do{\(my $o = 1)}, 'JSON::XS::Boolean' ),
'test_false' => bless( do{\(my $o = 0)}, 'JSON::XS::Boolean' )
};
在 decode_json:
之后我想要这样的东西$VAR1 = {
'test_true' => 1,
'test_false' => 0
};
原因:在某些情况下,很难预测 JSON::XS::Boolean 将如何使用 SOAP 序列化程序或其他序列化程序进行序列化。
没有。这些值是受祝福的对象。它们只能具有 JSON::XS::Boolean.
中允许的值对于 Cpanel::JSON::XS,unblessed_bool
选项控制它。因此,您可以使用以下内容:
use Cpanel::JSON::XS qw( );
my $j = Cpanel::JSON::XS->new->utf8->unblessed_bool;
my $data = $j->decode( $json );
JSON::XS(目前)没有等效的选项。您将不得不遍历数据返回结构并修复它。