gri*_*rim 2 ruby api hash json
我正在使用 Steam Storefront API - http://store.steampowered.com/api/appdetails/?appids=240
我已将 JSON 解析为哈希。
当我尝试选择嵌套在“数据”中的任何哈希值时,我收到一个“未定义的方法`[]' for nil:NilClass”错误。
我可以puts用res["240"]["data"]它向我展示所有的键和值。所有这些看起来都很好。
但是,当我尝试进一步移动一个分支时,它会抛出零。
res["240"]["data"]["type"]
Run Code Online (Sandbox Code Playgroud)
使用.key也会引发错误。
res["240"]["data"].key
Run Code Online (Sandbox Code Playgroud)
我寻求答案的主要是找到了搜索键和值的建议,但是我知道数据的直接路径,所以如果可能的话,我想走这条路。
谢谢。
如果您使用的是 ruby 2.3,则可以dig按照@sawa 的建议使用。
http://docs.ruby-lang.org/en/2.3.0/Hash.html#method-i-dig
但是,如果您使用的不是 ruby 2.3,那么事情会变得有点棘手。
最简单的方法是实现你自己的 dig 版本:
class Hash
def dig(*path)
path.inject(self) do |h, k|
h.respond_to?(:keys) ? h[k] : nil
end
end
end
Run Code Online (Sandbox Code Playgroud)
那么你就可以 res.dig("240", "data", "type")
| 归档时间: |
|
| 查看次数: |
3103 次 |
| 最近记录: |