2017-04-12 10 views
1

다음과 같이 수백 개의 개체 및 값 조합이 포함 된 파일이 있습니다. 개체 이름 & 숫자 값으로 사용자로부터 입력 값을 가져 와서 해당 값을 반환하고 싶습니다.Ruby - 해시로 파일 구문 분석

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'

루비 인식하지 오전이 내 동료를 돕기 위해 많은 작업을 수행 할 수 있습니다. 그래서 초보자 용 질문이라면 용서하십시오.

참고 : - 모든 파일 형식으로 파일을 작성해야하므로 큰 도움이됩니다.

+2

입력 파일을 JSON 또는 YAML로 변환 할 수 있습니까? CSV조차도 한 발자국이 될 것입니다. – tadman

+0

@ tadman : 가능합니다. 어느 파일 형식에서든 변환이 도움이 될 것입니다. – TheMightyNight

+0

@ tadman이 정확합니다. 예제를 통해이를 수행하는 방법을 보여주는 나의 대답을 확인하십시오. – Shaunak

답변

5

원래 데이터 파일을 만드는 것을 제어 할 수 있다고 가정하면 json 형식으로 생성하면 쉽게 액세스 할 수 있습니다.

여기는 repl.it of complete working example입니다. main.rb 파일을 선택하고 실행하십시오!

이 같은 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" 
    } 
    } 
} 

을 구문 분석 루비에 접근이 간단

data.json을 같은 :

require 'json' 
file = File.read('data.json') 
data = JSON.parse(file) 

#accessing this data is simple now: 

puts data["cefcModuleOperStatus"]["status"]["4"] 
# > okButDiagFailed 

참고 :이 JSON 형식은 고유 한 상태라면 ork을 선택하십시오. 그렇지 않은 경우에도이 방법을 사용할 수 있지만 JSON을 배열 형식으로 변환해야합니다. 이 경우 알려 주시면 json 및 루비 코드를 수정하는 방법을 알려 드리겠습니다.

도움이 되었으면 좋겠어. 어떻게 작동하는지 궁금한 점이 있으면 알려 주시기 바랍니다.