ruby - YAML::Dumper 不引用标量字符串 "-"

标签 ruby perl yaml

问题:获取 Perl 的 YAML::Dumper发出 {key=>"-"} 作为 key: "-" 而不是 key: -

我正在处理来自数据库行的哈希值,使用 SOAP 读取它们并将它们转换为 YAML 以供下一阶段使用。

第一阶段用 Perl 编写,并使用 YAML::Dumper 生成 YAML。不幸的是,对于值为 "-" 的键,将发出裸连字符 sans 任何引号:

$ perl -e 'use YAML;use YAML::Dumper; my $ydumper=YAML::Dumper->new(); print $ydumper->dump({key1=>1,key2=>"-",key3=>3});'
--- 
key1: 1
key2: -
key3: 3

下一个阶段,即读取上面的内容并对其执行进一步的操作,是在 Ruby 中。原始破折号导致 Ruby 的 YAML 解析器发生 varf:

$ ruby -rubygems -ryaml -e 'YAML.load($stdin.read);'  # assume the above piped in
/usr/share/ruby/vendor_ruby/psych.rb:205:in `parse': (<unknown>): block sequence entries are not allowed in this context at line 3 column 7 (Psych::SyntaxError)
    from /usr/share/ruby/vendor_ruby/psych.rb:205:in `parse_stream'
    from /usr/share/ruby/vendor_ruby/psych.rb:153:in `parse'
    from /usr/share/ruby/vendor_ruby/psych.rb:129:in `load'
    from -e:1:in `<main>'

我的问题很简单:如何指示 YAML::Dumper 将破折号作为带引号的字符串发出?

谢谢!

最佳答案

我创建了一个 pull request对于 github 上的 YAML::Dumper,希望它能被接受并解决这个问题。

关于ruby - YAML::Dumper 不引用标量字符串 "-",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23895637/

相关文章:

ruby-on-rails - 为什么我的 Rails 查找查询选择了所有记录?

php - 来自另一个键的 YAML 设置值

学习 Perl 中的正则表达式练习

java - 如何使用 VSCODE 将 YML 文件添加到我的项目中?

css - 使用 {% for post in site.posts %} 从特定子文件夹中提取

ruby - 在客户站点上使用 gems 安装 Ruby 的简单方法

ruby-on-rails - 在Rails上处理 ruby 视频

ruby - 如果不存在则追加字符串

perl - 如何通过调用外部程序来替换 perl 模块的使用?

linux - 无法使用 Net::Ping 在 Perl 中使用 Ping 外部主机