讓我們說我從API取回一個JSON嵌套散列(或散列數組)用nils遍歷ruby嵌套散列?
@example = {"results" = > {{"poop" => "shoop"},{"foo" => {"shizz" => "fizz", "nizzle"=>"bizzle"}}}
YAML標記中嵌套的哈希上述
- poop: shoop
- foo:
shizz: fizz
nizzle: bizzle
現在讓我們去作數據庫條目與ActiveRecord哈希。這工作正常。
Thing.create!(:poop => @example["results"]["poop"],
:shizz => @example["results"]["foo"]["shizz"],
:nizzle=> @example["results"]["foo"]["nizzle"])
但是如果'foo'爲空或無?例如,如果一個API結果有一個帶有「名字」,「姓氏」#等的「person」散列,那麼如果沒有數據,那麼「person」散列通常是空的,這意味着它內部的散列不會「不存在。
@example = {"results" = > {{"poop" => "shoop"},{"foo" => nil }}
Thing.create!(:poop => @example["results"]["poop"],
:shizz => @example["results"]["foo"]["shizz"],
:nizzle=> @example["results"]["foo"]["nizzle"])
NoMethodError: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
處理這個問題的最好方法是什麼?
確實很有趣,如何「耗盡」備忘錄散列 – maprihoda
光滑 - 這將派上用場 – klochner
所以我會製作一個自定義的類來擴展系統的哈希類,或者我會將這個'get'方法的猴子修補成「哈希」? – thoughtpunch