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

dol*_*men 5 perl json yaml boolean

我有一个包含布尔值的YAML文档:

---
ok: false
Run Code Online (Sandbox Code Playgroud)

我想在Perl 5中加载它并保留'boolean'类型,以便以后能够使用true/ falsevalues,而不是""/ 将文档正确地序列化为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)
Run Code Online (Sandbox Code Playgroud)

这是(损坏的)输出:

{
   "fine" : ""
}
Run Code Online (Sandbox Code Playgroud)

我希望在某些YAML加载器中存在一些钩子来映射true/ falseJSON::true/ JSON::false$Types::Serialiser::true/ $Types::Serialiser::false.

Cal*_*ahl 2

如果存在这样的 YAML 模块,那么它一定是一个相当不起眼的模块。您在这里使用的YAML::XS只是将 YAML 数据中的布尔值转换为标准内部值PL_sv_yesPL_sv_no,而这些值(据我所知)不可能被识别为特殊值。

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