2016-07-15 93 views
0
的數組訪問元素

我有散列的Rails應用程序下面的數組:生成和散列

a = ["{\"ROW1\"=>{\"correct\"=>{\"h\"=>\"10\", \"m\"=>\"11\", \"l\"=> 
\"12\"}, \"wrong\"=>{\"h\"=>\"2\", \"m\"=>\"2\", \"l\"=>\"4\"}, \"blank 
\"=>{\"h\"=>\"2\", \"m\"=>\"4\", \"l\"=>\"3\"}}, \"ROW2\"=>{\"correct 
\"=>{\"h\"=>\"2\", \"m\"=>\"4\", \"l\"=>\"4\"}, \"wrong\"=>{\"h 
\"=>\"4\", \"m\"=>\"6\", \"l\"=>\"6\"}, \"blank\"=>{\"h\"=>\"7\", 
\"m\"=>\"5\", \"l\"=>\"6\"}}, \"ROW3\"=>{\"correct\"=>{\"h\"=>\"4\", 
\"m\"=>\"6\", \"l\"=>\"7\"}, \"wrong\"=>{\"h\"=>\"6\", \"m\"=>\"7\", 
\"l\"=>\"5\"}, \"blank\"=>{\"h\"=>\"7\", \"m\"=>\"9\", \"l\"=> 
\"3\"}}}"] 

我想訪問它的元素,並從它創建一個數據庫表,在下面格式

ROW1   correct h=10, m=11,l=12 
       wrong  h=2, m=2,l=4 
       blank  h=2, m=4,l=3 

...和類似的ROW2和ROW3。

我該怎麼做?

我試圖訪問使用

a["ROW1"]["Correct"]["h"] 

值...但它返回一個零值。

如何訪問該陣列哈希值?

+0

你是如何生成的字符串?這不是一個有效的Ruby哈希,也不是JSON,看起來你在這一代中做錯了什麼。 (請參閱[XY問題](http://meta.stackexchange.com/q/66377/153968))。當問你的代碼有問題時,我們需要看你的努力。閱讀「[mcve]」,瞭解我們的需求。 –

+0

請不要忘記接受答案,(只),如果你認爲這是正確的解決方案。這將有助於其他觀衆瞭解答案的可信度。 –

回答

3

你需要先轉換成字符串哈希可以如下進行:

require 'json' 

a = ["{\"ROW1\"=>{\"correct\"=>{\"h\"=>\"10\", \"m\"=>\"11\", \"l\"=> 
\"12\"}, \"wrong\"=>{\"h\"=>\"2\", \"m\"=>\"2\", \"l\"=>\"4\"}, \"blank 
\"=>{\"h\"=>\"2\", \"m\"=>\"4\", \"l\"=>\"3\"}}, \"ROW2\"=>{\"correct 
\"=>{\"h\"=>\"2\", \"m\"=>\"4\", \"l\"=>\"4\"}, \"wrong\"=>{\"h 
\"=>\"4\", \"m\"=>\"6\", \"l\"=>\"6\"}, \"blank\"=>{\"h\"=>\"7\", 
\"m\"=>\"5\", \"l\"=>\"6\"}}, \"ROW3\"=>{\"correct\"=>{\"h\"=>\"4\", 
\"m\"=>\"6\", \"l\"=>\"7\"}, \"wrong\"=>{\"h\"=>\"6\", \"m\"=>\"7\", 
\"l\"=>\"5\"}, \"blank\"=>{\"h\"=>\"7\", \"m\"=>\"9\", \"l\"=> 
\"3\"}}}" 
] 

hash_string = a[0] 
hash = JSON.parse hash_string.gsub("\n", '').gsub('=>', ':') 

# you access the hash now: 
hash["ROW1"]["correct"]["h"] 
# => 10 

順便說一句,請注意,有一個錯字。取而代之的Correct,關鍵是correctc,而不是資本C

希望它可以幫助:)

+0

第一件事是理解_why_散列是在一個字符串中,而不是轉換它。一旦散列正確表示,那麼我們就可以前進。 –