PerlでJSONを扱う場合は、cpanでよく知られた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
こちらのモジュールの使い方に関しては、この記事のテーマからはズレるので別の記事にて書こうかなと。