Ruby - 将文件解析为哈希
Ruby - Parse a file into hash
我有一个包含数百个对象和值组合的文件,如下所示。我想从用户那里获取输入作为对象名称和数值以及 return 该关联值。
Object cefcFRUPowerOperStatus
Type PowerOperType
1:offEnvOther
2:on
3:offAdmin
4:offDenied
5:offEnvPower
6:offEnvTemp
Object cefcModuleOperStatus
Type ModuleOperType
1:unknown
2:ok
3:disabled
4:okButDiagFailed
5:boot
6:selfTest
例如- 输入 -
objectName = 'cefcModuleOperStatus'
TypeNumber = '4'
Return - 'okButDiagFailed'
我不知道 Ruby 并完成此操作以帮助我的同伴。所以如果这是一个新手问题,请原谅。
注意:- 我必须创建文件,所以使用任何文件格式都会有很大帮助。
如果像您所说的那样您可以控制原始数据文件的创建,那么以 json 格式创建它将使访问它变得微不足道。
这里是repl.it of complete working example。只需 select main.rb
文件并点击 运行!
例如,如果您创建 json 文件,例如:
data.json
{
"cefcFRUPowerOperStatus": {
"type": "PowerOperType",
"status": {
"1": "offEnvOther",
"2": "on",
"3": "offAdmin",
"4": "offDenied",
"5": "offEnvPower",
"6": "offEnvTemp"
}
},
"cefcModuleOperStatus": {
"type": "ModuleOperType",
"status": {
"1": "unknown",
"2": "ok",
"3": "disabled",
"4": "okButDiagFailed",
"5": "boot",
"6": "selfTest"
}
}
}
然后解析它并在 Ruby 中访问它就像这样简单:
require 'json'
file = File.read('data.json')
data = JSON.parse(file)
#accessing this data is simple now:
puts data["cefcModuleOperStatus"]["status"]["4"]
# > okButDiagFailed
注意: 如果您的状态是独一无二的,这种 JSON 格式将适用。如果不是,你仍然可以使用这种方式,但你需要将 JSON 转换为数组格式。如果是这种情况,请告诉我,我可以向您展示如何为此修改 json 和 ruby 代码。
希望对您有所帮助,如果您对它的工作原理还有其他疑问,请告诉我。
我有一个包含数百个对象和值组合的文件,如下所示。我想从用户那里获取输入作为对象名称和数值以及 return 该关联值。
Object cefcFRUPowerOperStatus
Type PowerOperType
1:offEnvOther
2:on
3:offAdmin
4:offDenied
5:offEnvPower
6:offEnvTemp
Object cefcModuleOperStatus
Type ModuleOperType
1:unknown
2:ok
3:disabled
4:okButDiagFailed
5:boot
6:selfTest
例如- 输入 -
objectName = 'cefcModuleOperStatus'
TypeNumber = '4'
Return - 'okButDiagFailed'
我不知道 Ruby 并完成此操作以帮助我的同伴。所以如果这是一个新手问题,请原谅。
注意:- 我必须创建文件,所以使用任何文件格式都会有很大帮助。
如果像您所说的那样您可以控制原始数据文件的创建,那么以 json 格式创建它将使访问它变得微不足道。
这里是repl.it of complete working example。只需 select main.rb
文件并点击 运行!
例如,如果您创建 json 文件,例如:
data.json
{
"cefcFRUPowerOperStatus": {
"type": "PowerOperType",
"status": {
"1": "offEnvOther",
"2": "on",
"3": "offAdmin",
"4": "offDenied",
"5": "offEnvPower",
"6": "offEnvTemp"
}
},
"cefcModuleOperStatus": {
"type": "ModuleOperType",
"status": {
"1": "unknown",
"2": "ok",
"3": "disabled",
"4": "okButDiagFailed",
"5": "boot",
"6": "selfTest"
}
}
}
然后解析它并在 Ruby 中访问它就像这样简单:
require 'json'
file = File.read('data.json')
data = JSON.parse(file)
#accessing this data is simple now:
puts data["cefcModuleOperStatus"]["status"]["4"]
# > okButDiagFailed
注意: 如果您的状态是独一无二的,这种 JSON 格式将适用。如果不是,你仍然可以使用这种方式,但你需要将 JSON 转换为数组格式。如果是这种情况,请告诉我,我可以向您展示如何为此修改 json 和 ruby 代码。
希望对您有所帮助,如果您对它的工作原理还有其他疑问,请告诉我。