Techioz Blog

Railsでハッシュからキーを取得する方法

概要

page.body では次のようになります。

page.body = "{\"error\":\"Sorry, that is an invalid URL\"}

「申し訳ありませんが、それは無効な URL です」だけを取得したいのです。 この page.body[:error] のようにフェッチしているとき、暗黙的な変換は行われません。 次のようにエラーがあるかどうかを確認しようとすると、次のようになります。

  page.body.include? "error" 
  true

エラー値を取得するのを手伝ってくれる人はいますか。

解決策

json を解析してハッシュを作成し、次のようにキーが存在するかどうかを確認する必要があります。

require 'json'
JSON.parse(page.body).key? "error"
#=> true

エラー値を取得するには、ほぼ同じアプローチです。

JSON.parse("{\"error\":\"Sorry, that is an invalid URL\"}")["error"]
# => "Sorry, that is an invalid URL" 
# or
JSON.parse("{\"error\":\"Sorry, that is an invalid URL\"}").fetch("error")
# => "Sorry, that is an invalid URL"