Unknown Region

プログラムでハマったエラーとその解決方法についての備忘録メモ

【Perl】PerlのJSONモジュールでbool値を扱う

PerlJSONを扱う場合は、cpanでよく知られたJSONモジュールを使用することが多い。

https://metacpan.org/pod/JSON

 

この時に値としてbool値を扱う場合には

  • [true]の場合には[\1]
  • [false]の場合には[\0]

を代入することで実現することができる。

 

例: demo1.pl

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use JSON;

my $input = {
  hoge => \0
};

my $output = encode_json($input);
print $output."\n";

exit;

実行結果: demo1.pl

perl demo1.pl
{"hoge":false}

 

decodeしてからencodeするのも勿論大丈夫です。

例: demo2.pl

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use JSON;

my $input = <<"STR";
{
  "hoge": true
}
STR
my $output = encode_json(decode_json($input));
print $output."\n";

exit;

実行結果: demo2.pl

perl demo2.pl
{"hoge":false}

 

booleanの場合はこれで良いのですが、稀に加工する段階でintとして出力したい物がstringとして出力されてしまったり、floatとして出力した物がintとして出力されてしまったり場合があり。

その場合には[Cpanel::JSON::XS]の使用がオススメ。

https://metacpan.org/pod/Cpanel::JSON::XS

こちらのモジュールの使い方に関しては、この記事のテーマからはズレるので別の記事にて書こうかなと。

 

連絡先: plugout777★yahoo.co.jp (クローラー対策のため★を@に変更してください)