如何在Perl 5中保留YAML文档中的布尔类型?

时间:2015-09-24 14:14:34

标签: json perl boolean yaml

我有一个包含布尔值的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

1 个答案:

答案 0 :(得分:0)

如果存在这样的YAML模块,它必须是一个相当模糊的模块。你在这里使用的那个,YAML::XS只是简单地将YAML数据中的布尔值转换为标准内部值PL_sv_yesPL_sv_no,并且(据我所知)这些值无法识别为特殊。

从积极的方面来看,修补YAML::XS使用Types::Serialiser进行布尔值并发送拉取请求似乎非常简单。