2016-10-12 2 views
2

나는 루비와 뉘앙스에 새로운 오전하지만 난 꽤 수정하거나 이해하는 방법을 알고 해달라고이 문제로 실행하고 있습니다 :루비 해시

test = JSON.parse('[ 
    {"values":[ 
     ["header 1", "header 2", "header 3"], 
     ["value 1", "value 2", "value 3"]] 
    }] 
') 
: 나는 해시를 만드는 경우

그럼 난 액세스 test.values ​​[0] 내가 얻을 :

[[["header 1", "header 2", "header 3"], ["value 1", "value 2", "value 3"]]] 

당신이 배열에 추가 레이어를 추가 볼 수 있듯이. 어디로 돌아갈 것으로 기대합니까 :

[["header 1", "header 2", "header 3"], ["value 1", "value 2", "value 3"]] 

누구든지이 설명을 주거나이 문제를 완화하는 데 도움이 될 수 있습니까?

감사합니다.

+2

배열에서'.values'를 호출하면 안됩니다 (이는'test'가 무엇입니까) –

+2

* undefined method *에 대한 구문 오류가 발생합니다. – tadman

+0

이 게시물에 응답 한 사람들에게 감사드립니다. 그것은 값이 메서드라는 것이고 의도하지 않은 결과는 키가 들어 가지 않고 내용을 가져 오지 않고 대신 메서드 값을 호출한다는 것입니다. – niallsc

답변

4

나는이 같은 올바른 방법으로 데이터에 액세스하지 않는 것을 확신한다 :

test = JSON.parse('[ 
    {"values":[ 
     ["header 1", "header 2", "header 3"], 
     ["value 1", "value 2", "value 3"]] 
    }] 
') 

puts test[0]['values'].inspect 
puts test[0]['values'][0].inspect 

출력 :

[["header 1", "header 2", "header 3"], ["value 1", "value 2", "value 3"]] ["header 1", "header 2", "header 3"]

1

당신의 JSON은 값이라는 키를 포함. 해시 값을 받기 위해서는 이것을 test[0]['values']처럼 사용해보십시오. test[0].values을 사용할 때 해시에있는 모든 단일 키의 모든 값을 배열에 결합하여 반환하는 Hash#values (Hash 클래스의 인스턴스 메서드)을 실제로 호출합니다.