如何更新 ruby 中的 yaml 根密钥
How to update the yaml root key in ruby
我需要比较 yaml 文件以确定其中的差异,为此我需要 yaml 文件以相同的根密钥开头。是否可以更新 ruby 中的 yaml 根密钥? (注:不是yml文件中的值)
Yaml 文件示例:
person:
name: abc
age: 10
address: xyz
我的要求是更新 yaml 文件如下。
student:
name: abc
age: 10
address: xyz
在此先感谢您的帮助!!!
我不是 100% 确定你在找什么,但是一旦你加载了 yaml,你最终会得到一个 ruby 哈希。然后,您可以为根密钥创建一个新名称的新哈希。
例如这个:
require 'yaml'
input =
"person:
name: abc
age: 10
address: xyz"
obj = YAML.load(input)
new_obj = {"student" => obj["person"]}
output = YAML.dump(new_obj)
puts output
将打印:
---
student:
name: abc
age: 10
address: xyz
如果出于某种原因您不想要文档 header“---”,您可以将其删除。
no_header = output.split("\n").drop(1).join("\n")
puts no_header
将打印:
student:
name: abc
age: 10
address: xyz
我需要比较 yaml 文件以确定其中的差异,为此我需要 yaml 文件以相同的根密钥开头。是否可以更新 ruby 中的 yaml 根密钥? (注:不是yml文件中的值)
Yaml 文件示例:
person:
name: abc
age: 10
address: xyz
我的要求是更新 yaml 文件如下。
student:
name: abc
age: 10
address: xyz
在此先感谢您的帮助!!!
我不是 100% 确定你在找什么,但是一旦你加载了 yaml,你最终会得到一个 ruby 哈希。然后,您可以为根密钥创建一个新名称的新哈希。
例如这个:
require 'yaml'
input =
"person:
name: abc
age: 10
address: xyz"
obj = YAML.load(input)
new_obj = {"student" => obj["person"]}
output = YAML.dump(new_obj)
puts output
将打印:
---
student:
name: abc
age: 10
address: xyz
如果出于某种原因您不想要文档 header“---”,您可以将其删除。
no_header = output.split("\n").drop(1).join("\n")
puts no_header
将打印:
student:
name: abc
age: 10
address: xyz