In Perl, prüfen eines json-dekodierten booleschen Wert
JSON-dekodierten Boolesche Werte sind Objekte:
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
use JSON;
my $json_string = '{"boolean_field":true}';
my $decoded_json = from_json $json_string;
print Dumper $decoded_json;
Ausgabe:
$VAR1 = {
'boolean_field' => bless( do{\(my $o = 1)}, 'JSON::XS::Boolean' )
};
Aus der JSON.pm-Dokumentation weiß ich über die folgenden drei Methoden:
- JSON::is_bool
- JSON::true
- JSON: false:
Jedoch für einige dumme Grund, warum ich nicht wissen, wie um zu bestimmen, ob der Wert von 'boolean_field' in $decoded_json
ist true oder false.
(Sorry für die sehr einfache Frage; es ist gewesen fahrend mich bekloppt!)
- Ein Teil der Verwirrung kommt wohl von Perl selbst - Perl nicht haben, Boolesche Typen in der Sprache. Es hat nur truthiness. Bei der Auswahl einer Sprache für Projekte, das ist eine Sache, zu berücksichtigen, vor allem für die Verbraucher von JSON-APIs.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es wird ein Wert truthy in Perl. Zugang nur normal.
1
fürtrue
und0
fürfalse
. Der einzige Grund, warum die Objekte werden benötigt, so kann man sagen, der Unterschied zwischen einem boolean und einem tatsächlichen 0 oder 1, wenn Sie benötigen.