2011-04-19 4 views
1

정수로 YAML::dump(result)을 수행 할 때 다음과 같습니다 (result) :캐스트 문자열 내가 변수가

:

responseHeader: 
    status: 0 
    QTime: 1 
    params: 
    wt: ruby 
    q: enid:(15542697739) 
response: 
    numFound: 1 
    start: 0 
    docs: 
    - enid: "15542697739" 

나는이 같은 enid에 조건 비교를 할

if result["response"]["docs"]["enid"].to_i == num['1']['car'] 

여기서, num['1']['car']은 정수입니다. 나는이 시도 할 때마다

, 나는

result["response"]["docs"]["enid"].to_i 

또는

Integer(result["response"]["docs"]["enid"]) 

가 어떻게 내 enid 값으로 변환합니까 시도 할 경우에도,

can't convert String into Integer 
(TypeError) 

을 던져 형식 오류를 얻을 수 이 비교를 할 수 있도록 정수?

답변

2

문제는 result["response"]["docs"]에있는 것이 해시가 아니며 문제를 해결하고 있다는 것입니다. 이 경우에 필요한 것은 result["response"]["docs"][0]["enid"]입니다. 이유를보고 싶다면 p result["response"]을 사용해 각 레벨에서 Ruby 데이터 구조가 사용 중인지 확인하십시오. YAML은 비록 당신이 잠시 그것을 읽었 었다고해도 조금 오해의 소지가 있습니다.

+0

좋아요! 고마워요 피터! 바로. [0] 용어로 시도해 보면 효과가 있습니다. 희망이 다른 사람들에게도 도움이됩니다! – Sly

관련 문제