2016-10-12 9 views
2

私はRubyとそのニュアンスに新しいですが、私は、私はかなり修正したり、理解する方法を知らないこの問題に実行しています:私はハッシュを作成する場合Rubyのハッシュ

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

*未定義メソッド*の構文エラーが出てきます。 – 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']のようにそれを試してみてください。​​を使用している場合は、実際にHash#values(ハッシュクラスのインスタンスメソッド)を呼び出すことで、ハッシュ内のすべての単一キーのすべての値が配列に結合されます。

関連する問題