ruby 如何在Rails中从hash中获取密钥

8wigbo56  于 12个月前  发布在  Ruby
关注(0)|答案(3)|浏览(95)

在page.body中,我得到了这个:

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

我只想获取“对不起,这是一个无效的URL”。当我像这样获取page.body[:error]时,我没有得到隐式转换。当我试图看到错误是否存在时,就像这样:

page.body.include? "error" 
  true

谁能帮我得到错误值。

jckbn6z7

jckbn6z71#

你需要解析json,对它进行散列,然后你可以像这样检查key是否存在:

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"
oxf4rvwz

oxf4rvwz2#

String#[]不接受符号参数,这就是为什么你有错误
你需要先把字符串转换成哈希,你可以用JSON::[]来做。

page.body = "{\"error\":\"Sorry, that is an invalid URL\"}"
parsed_body = JSON[page.body, symbolize_names: true]
parsed_body[:error] # => "Sorry, that is an invalid URL"
qmelpv7a

qmelpv7a3#

如果没有错误,返回您想要的内容

require 'json'

def get_errors_from_json(page.body)
 parsed_json = JSON.parse(json_string) 
 error_message = parsed_json.key?("error") ? parsed_json["error"] : "No errors"
end

相关问题