Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby-将文件解析为哈希_Ruby_Dictionary_Ruby Hash - Fatal编程技术网

Ruby-将文件解析为哈希

Ruby-将文件解析为哈希,ruby,dictionary,ruby-hash,Ruby,Dictionary,Ruby Hash,我有一个包含数百个对象和值组合的文件,如下所示。我想从用户那里获取输入,作为对象名和数值,并返回关联的值 Object cefcFRUPowerOperStatus Type PowerOperType 1:offEnvOther 2:on 3:offAdmin 4:offDenied 5:offEnvPower 6:offEnvTemp Object cefcModuleOperSta

我有一个包含数百个对象和值组合的文件,如下所示。我想从用户那里获取输入,作为对象名和数值,并返回关联的值

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'
返回-'okButDiagFailed'

我不了解Ruby,所以我做这件事是为了帮助我的同龄人。所以,如果这是一个新手问题,请原谅


注意:-我必须创建文件,因此使用任何文件格式都会非常有帮助。

如果您说您可以控制创建原始数据文件,那么使用json格式创建它将使访问变得非常简单

这是一本书。只需选择
main.rb
文件并点击run

例如,如果您创建json文件,如:

data.json

然后,在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代码


希望这能有所帮助,如果您对如何工作有进一步的疑问,请告诉我

如果像您所说的,您可以控制创建原始数据文件,那么以json格式创建它将使访问变得微不足道

这是一本书。只需选择
main.rb
文件并点击run

例如,如果您创建json文件,如:

data.json

然后,在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代码


希望这能有所帮助,如果您对如何工作有进一步的疑问,请告诉我

你能把这个输入文件转换成JSON或YAML或者其他更传统的格式吗?即使是CSV也会是一个进步。@tadman:是的,我能。从任何文件格式转换都会有帮助。@tadman完全正确。请检查我的答案,通过一个工作示例说明如何做到这一点。您尝试了什么?您遇到问题的代码是什么?你的代码有什么问题?你有错误吗?如果是,您得到的准确错误是什么?实际结果是否与预期结果不同?如果是,你期望的结果是什么,你为什么期望这个结果,实际结果是什么,它们有什么区别?观察到的代码行为是否与预期行为不同?如果是,预期的行为是什么?为什么?你看到的行为是什么?它们有什么区别?预期行为的规范是什么?您可以将该输入文件转换为JSON或YAML或其他更常规的格式吗?即使是CSV也会是一个进步。@tadman:是的,我能。从任何文件格式转换都会有帮助。@tadman完全正确。请检查我的答案,通过一个工作示例说明如何做到这一点。您尝试了什么?您遇到问题的代码是什么?你的代码有什么问题?你有错误吗?如果是,您得到的准确错误是什么?实际结果是否与预期结果不同?如果是,你期望的结果是什么,你为什么期望这个结果,实际结果是什么,它们有什么区别?观察到的代码行为是否与预期行为不同?如果是,预期的行为是什么?为什么?你看到的行为是什么?它们有什么区别?预期行为的规范是什么?