我正在使用ruby-aaws gem访问Amazon AWS API,但是我没有深入了解API或gem的细节,我认为我的问题更具有普遍性。
当我查询API时,我最终会得到“对象数组”,我们称之为item
,其中包含API响应。
我可以轻松访问数组中的数据,例如puts item.item_attributes.artist.to_s
现在API返回其标识符是Rails中的保留字的属性,例如格式或绑定。
这样做:
puts item.item_attributes.format.to_s
将返回找不到的方法
而
puts item.item_attributes.binding.to_s
会返回一些像#<Binding:0xb70478e4>
这样的对象哈希。
我可以看到这个名字下面有值
puts item.item_attributes.to_yaml
结果yaml中的片段显示艺术家和绑定:
--- !seq:Amazon::AWS::AWSArray
- !ruby/object:Amazon::AWS::AWSObject::ItemAttributes
__val__:
artist: !seq:Amazon::AWS::AWSArray
- !ruby/object:Amazon::AWS::AWSObject::Artist
__val__: Summerbirds in the Cellar
binding: !seq:Amazon::AWS::AWSArray
- !ruby/object:Amazon::AWS::AWSObject::Binding
__val__: Vinyl
这可能是一个非常简单的解决方案,但我似乎无法找到解决方案。
修改
终于找到了。我想这是因为它是一个对象数组,呃......
puts item.item_attributes[0].binding.to_s
答案 0 :(得分:0)
您可以使用[]
而不是方法名称(可能使用method_missing
提供)来访问各个属性。
因此,item.item_attributes[:artist].to_s
可能会返回您想要的内容。如果没有,则值得尝试使用'artist'
作为密钥。
答案 1 :(得分:0)
puts item.item_attributes[0].binding.to_s