我正在尝试从这个JSON API中获取一些产品,以便我可以在我的视图中显示它们,如果我得到nil,使用Hash#fetch
优雅地处理错误的JSON来声明默认值。
但为什么我会:
can't convert String into Integer
或者如果我将@json_text
设置为{}
:
undefined method 'fetch' for `nil:NilClass`
直播应用:http://runnable.com/U-QEWAnEtDZTdI_g/gracefully-handle-bad-json
class MainController < ApplicationController
require 'hashie'
def index
@json_text = <<END
{
"products": []
}
END
hashes = JSON.parse(@json_text)
mashes = Hashie::Mash.new(hashes)
products = []
mashes.products.fetch('products', []).each do |mash|
puts "YOLO"
end
end
end
答案 0 :(得分:2)
正确的获取方式是在mashes变量上调用fetch
:
mashes.fetch('products', []).each do |mash|
puts "YOLO"
end
#fetch是一种哈希方法,在这种情况下与mashes ['product']相同,除非product
为nil
,使用fetch
示例将返回[]