我从条纹中获得了一个返回并试图解析它并且显然是在做错了。
stripe_webhooks.rb控制器中的代码
@event_data = JSON.parse(request.body.read)
当我记录那是完全返回。但是,当我尝试访问任何这样的值时(这是我在工作的教程中设置的方式)
@event_data.data.object.id
我收到错误
NoMethodError (undefined method `data' for #<Hash:0x007fe533bebe08>):
我需要访问(除其他外)的是来自费用的id,而不是该事件的第一个id。所以在下面的输出中带有“ch _...”的id。
输出记录
Parameters: {"id"=>"evt_19DMt92cKHX9k3v0rcdvLs5a", "object"=>"event", "api_version"=>"2014-03-28", "created"=>1478562655, "data"=>{"object"=>{"id"=>"ch_19DMt92cKHX9k3v0iQKMEHDu", "object"=>"charge",...
如果有人能够了解如何访问“data =&gt; {”object“=&gt; {”部分内的数据,我们将不胜感激。
答案 0 :(得分:3)
您希望使用bracket accessors访问正在加载的哈希值。
@event_data["data"]["object"]["id"]`
它将为您提供您正在寻找的东西。
同样很多次ruby代码更喜欢使用symbols,这意味着你可以使用
@event_data = JSON.parse(request.body.read).with_indifferent_access
通过
访问相同的内容@event_data[:data][:object][:id]
请注意,这些解决方案不会处理缺失值,在这种情况下,您需要防止访问者返回nil
而不是您定义的结构。