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"