2016-09-28 126 views
0

我有JSON對象調用線組成的數組:紅寶石陣列值

[{"label":"Name","value":"Bob","identifier":"field2","type":"oneLineText","page":1,"page_name":"Step 1","width":"100%"},{"label":"Email","value":"[email protected]","identifier":"field3","type":"email","page":1,"page_name":"Step 1","width":"100%"},{"label":"Phone Number","value":"","identifier":"field7","type":"oneLineText","page":1,"page_name":"Step 1","width":"100%"},{"label":"Comments","value":"some information about the compagny","identifier":"field5","type":"textarea","page":1,"page_name":"Step 1","width":"100%"}] 

如何訪問標籤註釋的值:
"label":"Comments","value":"some information about the compagny"

這裏是我的代碼:

data = JSON.parse(line) 
data.each do |key, value| 
    puts "#{key}" 
    puts "#{key} name: #{value["name"]}" 
    puts "#{key} value: #{value["value"]}\n" 
    label = value["name"] 
    value = value["value"] 
    if (label eq "label") && (value eq "Comments") 
     puts "#{key} value: #{value["value"]}\n" 
    end 
end  

我拿到之後第一對象ID解析錯誤:

{"label"=>"Name", "value"=>"Bob", "identifier"=>"field2", "type"=>"oneLineText", "page"=>1, "page_name"=>"Step 1", "width"=>"100%"} 
undefined method `[]' for nil:NilClass (NoMethodError)` 

回答

0

您可以使用下面的代碼訪問您的數據:

data = JSON.parse(line) 
data.each do |d| 
    puts "#{d}" 
    puts "#{d} label: #{d["label"]}" 
    puts "#{d} value: #{d["value"]}" 
end 

解析符合JSON.parse後,您的data變量將包含哈希值的數組。當您迭代該數組時,塊變量d被分配給其中一個散列。

所以,在這個例子中,以puts第一呼叫將顯示分配給變量d整個散列值,和所述第二個將顯示整個哈希隨後分配給該散列的密鑰label值。

同樣,第三行顯示如何訪問存儲在value密鑰中的值。