我有一个包含数百个对象和值组合的文件,如下所示。我希望得到用户的输入作为对象名称&数值并返回相关值。
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
E.g。 - 输入 -
objectName = 'cefcModuleOperStatus'
TypeNumber = '4'
返回 - 'okButDiagFailed'
我不知道Ruby并且完成了这项工作来帮助我的同行。如果这是一个新手问题,请原谅。
注意: - 我要用任何文件格式创建文件,这将是一个很好的帮助。
答案 0 :(得分:5)
如果您说您可以控制创建原始数据文件,那么以json格式创建它将使访问变得微不足道。
这是repl.it of complete working example。只需选择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代码。
希望有所帮助,如果您对此如何运作有进一步的疑问,请与我们联系。