【发布时间】:2014-08-09 06:04:23
【问题描述】:
我正在尝试优雅地处理以下错误的 JSON,其中 Hash#fetch 似乎不是一个选项 (Handle bad JSON gracefully with Hash#fetch):
直播应用:http://runnable.com/U-QJCIFvY2RGWL9B/pretty-json-keys (main_controller.rb)
显然最好的方法是在每个参数的末尾添加{ 'not found' }:
mashie.products.each do |product|
product.extend Hashie::Extensions::DeepFetch
product.name = product.deep_fetch :name { 'not found' }
product.brand = product.deep_fetch :brand, :name { 'not found' }
product.price = product.deep_fetch :sale_price { 'not found' }
product.currency = product.deep_fetch :currency { 'not found' }
@products << product
end
但是有没有办法把它弄干?
已编辑:根据与 @dax 的讨论更新
【问题讨论】:
-
产品价格总是以 deep_fetch :currency 的值结束,不是吗?
-
不,
:sale_price和:currency是两个不同的值。 -
@dax 指的是您分配给
product.price三次的事实,并且想知道(和我一样)您是否打算分配给不同的属性。 -
糟糕!那是一个错字!抱歉,@dax,Amadan。问题已编辑。
-
@Amadan,没错 - 马克,我添加了一个我认为根据更新信息更合适的答案。
标签: ruby-on-rails ruby json hash