gpt4 book ai didi

ruby - 将 Yaml 转换为 Ruby 哈希时,如何区分具有相同键的条目

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:21 25 4
gpt4 key购买 nike

我有一个 yaml 文件,其中包含与此类似形式的条目。这些条目表示数据库的更改集,键是数据库名称。需要重复项,因为数据库可能以特定顺序发生多次更改。

exampleName:
user: user
version: 1
artifact: example1
order: 1
exampleName:
user: user
version: 1
artifact: example2
order: 4
aName:
user: user2
version: 12
artifact: example3
order: 3

我希望能够通过名称和工件来区分它们,以便识别 exampleName 的两个实例。但是,当我使用 YAML::load_file 时,因为它们具有相同的 key ,所以只有最后一个将保留在哈希中,而另一个丢失。在将 yaml 加载到哈希中时,是否有某种方法可以让 key 成为名称和工件的组合,或者我是否需要手动解析 yaml。我发现了一个模糊相关的问题。

In Ruby, how to be warned of duplicate keys in hashes when loading a YAML document?

这似乎不可能像我希望的那样,但任何解决方法都会很棒。

最佳答案

如果您能够改变 Yaml 文件的生成方式,或者如果您能够对其进行适当的预处理,您可以创建一个包含多个 Yaml documents 的文件。 .它看起来像这样:

exampleName:
user: user
version: 1
artifact: example1
order: 1
---
exampleName:
user: user
version: 1
artifact: example2
order: 4
---
aName:
user: user2
version: 12
artifact: example3
order: 3

请注意如何使用 --- 将每个文档与其他文档分开。

您现在可以使用 YAML.load_stream 解析它,这将为您提供一个哈希数组:

YAML.load_stream File.read('./your_yaml_file.yaml')

结果将是:

[{"exampleName"=>
{"user"=>"user", "version"=>1, "artifact"=>"example1", "order"=>1}},
{"exampleName"=>
{"user"=>"user", "version"=>1, "artifact"=>"example2", "order"=>4}},
{"aName"=>
{"user"=>"user2", "version"=>12, "artifact"=>"example3", "order"=>3}}]

关于ruby - 将 Yaml 转换为 Ruby 哈希时,如何区分具有相同键的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18467461/

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