没有别名的 Ruby YAML 编写

标签 ruby yaml

我正在将数据从 ruby​​ 写入 yaml 文件,并且我经常在文件周围点缀别名。像这样的东西:

- &id001  
  somekey: somevalue
- *id001

在我的例子中,我使用 yaml 文件来帮助可读性并为文件中的值添加名称,因为现有数据只是 | 分隔值,没有键。如何防止使用别名写入 yaml 文件?

[编辑]

为了进一步说明,这里有一个数据类型和问题的示例。

原始数据如下:

Ham|2.00|1
Eggs|0.50|12
Milk|2.00|2

并且我编写了一个 ruby​​ 脚本来将其转换为 yaml,它还会查看 sql 文件以获取适当的名称。 yaml 文件如下所示:

---
- !omap
  - name: Ham
  - &id001
    price: 2.00
  - quantity: 1
- !omap
  - name: Eggs
  - price: 0.50
  - quantity: 12
- !omap
  - name: Milk
  - *id001
  - quantity: 1

这会导致大型数据集出现问题,因为别名可能彼此相距甚远,难以阅读。

最佳答案

您为什么使用 YAML::Omap 的?

一个更简单、更清晰的解决方案是首先将数据读入哈希数组,如下所示:

a = [ {'name' => 'Ham', 'price' => 2.00, 'quantity' => 1},
      {'name' => 'Eggs', 'price' => 0.50, 'quantity' => 12},
      {'name' => 'Milk', 'price' => 2.00, 'quantity' => 2} ]

然后就做:

a.to_yaml

导致:

--- 
- price: 2.0
  name: Ham
  quantity: 1
- price: 0.5
  name: Eggs
  quantity: 12
- price: 2.0
  name: Milk
  quantity: 2

这对你有用吗?

关于没有别名的 Ruby YAML 编写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3981128/

相关文章:

yaml - Kubernetes ConfigMap 自动将 Literal 更改为 Folded Block Scalar

playframework - Yabe Initial-Data.yml 发现字符 '\t' 错误

java - 如何打包成.jar java main + jruby编译类+ ruby​​脚本?

ruby-on-rails - Rails Time 类有一个 TimeZone Bug。这可以证实吗?

ruby - 我可以在我的类中实现 += 来增加包含的值吗?

amazon-web-services - 如何将 cloudformation 堆栈输出导入另一个堆栈参数中?

yaml - yaml中的 `<<`和 `&`是什么意思?

.net - 我可以顺序读取 YamlDotNet 映射吗?

ruby-on-rails - 在 Rails 的 URL 中将 "%20"替换为 "-"

ruby - 类变量和类实例变量之间的区别?