gpt4 book ai didi

ruby - 使用嵌套的 Ruby 哈希时如何避免 "undefined method ` [ ]' for nil:NilClass"?

转载 作者:数据小太阳 更新时间:2023-10-29 08:30:59 24 4
gpt4 key购买 nike

我正在使用 Steam Storefront API - http://store.steampowered.com/api/appdetails/?appids=240

我已将 JSON 解析为哈希。

当我尝试选择嵌套在“data”中的任何哈希值时,我收到“undefined method `[]' for nil:NilClass”错误。

我可以用 res["240"]["data"] put 全部,这会显示所有的键和值。所有这些看起来都不错。

然而,当我尝试更进一步的一个分支时,它抛出 nil。

res["240"]["data"]["type"]

使用 .key 也会引发错误。

res["240"]["data"].key

我寻找答案的努力主要是找到了搜索键和值的建议,但是我知道通往数据的直接路径,所以如果可能的话我想走这条路。

谢谢。

最佳答案

如果您使用的是 ruby​​ 2.3,您可以按照@sawa 的建议使用dig

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

然后你可以res.dig("240", "data", "type")

关于ruby - 使用嵌套的 Ruby 哈希时如何避免 "undefined method ` [ ]' for nil:NilClass"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34733913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com