Как преобразовать строку в хэш ruby

Ответы
Аватар пользователя Nikolai Gagarinov
Nikolai Gagarinov
23 ноября 2021

Строку можно перевести в хеш в зависимости от того, где эта строка используется

К примеру JSON

require 'json'
pp JSON.parse '{ "squadName": "Super hero squad", "homeTown": "Metro City", "formed": 2016, "secretBase": "Super tower", "active": true }'
# => {
# =>   "squadName"=>"Super hero squad",
# =>  "homeTown"=>"Metro City",
# =>  "formed"=>2016,
# =>  "secretBase"=>"Super tower",
# =>  "active"=>true
# =>  }

Строка запроса (query_params)

require 'cgi'

pp CGI::parse("foo=bar&bar=foo&hello=hi")
# => {"foo"=>["bar"], "bar"=>["foo"], "hello"=>["hi"]}

Когда хеш в виде строки

hash_as_string = "{\"0\"=>{\"answer\"=>\"1\", \"value\"=>\"No\"}, \"1\"=>{\"answer\"=>\"2\", \"value\"=>\"Yes\"}, \"2\"=>{\"answer\"=>\"3\", \"value\"=>\"No\"}, \"3\"=>{\"answer\"=>\"4\", \"value\"=>\"1\"}, \"4\"=>{\"value\"=>\"2\"}, \"5\"=>{\"value\"=>\"3\"}, \"6\"=>{\"value\"=>\"4\"}}"
JSON.parse hash_as_string.gsub('=>', ':')