【发布时间】:2017-10-10 06:46:24
【问题描述】:
参考In Perl, checking a json decoded boolean value,
我有一个验证子,我需要像这样检查,
my $boolean = 'true';
my $json_string = '{"boolean_field":true}';
my $decoded_json = from_json $json_string;
&verify($boolean);
$boolean = 'false';
$json_string = '{"boolean_field":false}';
$decoded_json = from_json $json_string;
&verify($boolean);
sub verify {
my $boolean = shift;
if( $decoded_json->{'boolean_field'} eq $boolean ){
# both are equal
}
此 if 条件失败,因为 $decoded_json->{'boolean_field'} 返回 1 或 0。
如何将$decoded_json->{'boolean_field'} 评估为字符串“真”或“假”?
我现在的工作是
my $readBit = ($boolean =~ /false/ ) ? 0 : 1 ;
if( $decoded_json->{'boolean_field'} eq $readBit){
# both are equal
}
【问题讨论】:
-
这没有任何意义。如果是
1,那么就不是"true"。 -
示例 JSON 将帮助我们回答。
'false'是一个字符串,在布尔逻辑意义上它不是“假”。我认为这就是你问题的根源。 -
@Quentin,改变了我原来的问题。两种情况都有一个验证子(真和假)
-
如果您使用 JSON 模块或同一家族之一解码字符串,则布尔值将被转换为具有重载的对象以返回真值或假值。你只需要直接评估它。有关布尔值,请参阅 cpan 上的 JSON 文档。
-
您引用的答案正是您所需要的。
标签: json perl boolean-expression