我有一个包含布尔值的YAML文档:
---
ok: false
我想在Perl 5中加载它并保留'boolean'类型,以便稍后能够使用true
/ false
值将文档正确序列化为JSON,而不是""
/ "1"
。
我写的以下转换器无法保留布尔值:
#!/usr/bin/env perl
use strict;
use warnings;
use YAML::XS qw<LoadFile>;
use JSON::MaybeXS ();
print JSON::MaybeXS->new->ascii->pretty->canonical->encode(LoadFile shift)
这是(损坏的)输出:
{
"fine" : ""
}
我希望某些YAML加载器中存在一些钩子,以将true
/ false
映射到JSON::true
/ JSON::false
或$Types::Serialiser::true
/ $Types::Serialiser::false
。
答案 0 :(得分:0)
如果存在这样的YAML模块,它必须是一个相当模糊的模块。你在这里使用的那个,YAML::XS
只是简单地将YAML数据中的布尔值转换为标准内部值PL_sv_yes
和PL_sv_no
,并且(据我所知)这些值无法识别为特殊。
从积极的方面来看,修补YAML::XS
使用Types::Serialiser
进行布尔值并发送拉取请求似乎非常简单。