"-"} 作为 key: "-" 而不是 key: - 我正在处理来自数据库行的哈希值,使用 SOAP 读取它们并将它们转换为 YA-6ren">
gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:27:00 24 4
gpt4 key购买 nike

问题:获取 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com