我有以下json数据
[{
"id": 2332860,
"name": "NAME 1",
"capping": [{
"quantity": 1,
"rule":[{"frequency": 'bad' }]
}]
},
{
"id": 77777,
"name": "NAME 2",
"capping": [{
"quantity": 2,
"rule":[{"frequency": 'good' }]
}]
}]
这是我首先通过api响应检索 id和名称数据的方法,按照下面的代码,一切都可以正常工作
obj=JSON.parse(response)
print(obj)
obj.each do |val|
id, name = val['id'], val['name']
puts "ID: #{id}"
puts "Name: #{name}"
end
这是视图的外观
<ul>
<% obj.each do |val| %>
<li><%= val['id'] %> - <%= val['name'] %></li>
<% end %>
</ul>
目前正在努力实现的目标:
现在,我想从上限访问数量,从规则访问频率。为此,我在下面实现了此代码,但得到了 错误的未定义局部变量或方法上限
obj=JSON.parse(response)
print(obj)
obj.each do |val|
id, name = val['id'], val['name']
puts "ID: #{id}"
puts "Name: #{name}"
#get quqntity
val.capping.each do |cap|
quantity = cap['quantity']
puts "QTY: #{quantity}"
#get frequency
cap.rule.each do |r|
frequency = r['frequency']
puts "FRQ: #{frequency}"
end
end
end
关于为什么会出现上述错误的任何想法都可以帮助我解决该问题
答案 0 :(得分:0)
您需要像访问capping
和id
一样访问name
。 Ruby认为val.capping
是一种方法。尝试使用此:
val[:capping]
或
val['capping']