2016-07-15 63 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_散列是在一个字符串中,而不是转换它。一旦散列正确表示,那么我们就可以前进。 –