Hashie::Rash 在 Json 上被转换为字符串,或者在 Rails 上被转换为 Ruby 中的散列

Hashie::Rash being converted to string instead on Json or hash in Ruby on Rails

我正在使用 API,其回复格式为 Hashie::Rash。一个例子:

country = #<Hashie::Rash confidence="99" geoname_id=3175395 iso_code="IT" names=#<Hashie::Rash de="Italien" en="Italy" es="Italia" fr="Italie" ja="イタリア共和国" pt_br="Itália" ru="Италия" zh_cn="意大利">>

country.class = Hashie::Rash

我想把它转换成 Json,看起来像

{"iso_code":"IT","names": {"pt_br":"Itália","es":"Italia","ru":"Италия","en":"Italy","zh_cn":"意大 利","fr":"Italie","de":"Italien","ja":"イタリア共和 国"},"confidence":"99","geoname_id":3175395}

当我尝试使用 to_json() 时,它会生成以下内容:

"{\"iso_code\":\"IT\",\"names\":{\"pt_br\":\"Itália\",\"es\":\"Italia\",\"ru\":\"Италия\",\"en\":\"Italy\",\"zh_cn\":\"意大利\",\"fr\":\"Italie\",\"de\":\"Italien\",\"ja\":\"イタリア共和国\"},\"confidence\":\"99\",\"geoname_id\":3175395}"

其class是一个字符串。

如何将其转换为 JSON 或哈希形式??。谢谢

我假设您的 to_json 格式数据如下所示:

str =  "{\"iso_code\":\"IT\",\"names\":{\"pt_br\":\"Itália\",\"es\":\"Italia\",\"ru\":\"Италия\",\"en\":\"Italy\",\"zh_cn\":\"意大利\",\"fr\":\"Italie\",\"de\":\"Italien\",\"ja\":\"イタリア共和国\"},\"confidence\":\"99\",\"geoname_id\":3175395}"

然后转到终端并要求 json 并像下面这样解析它:

require 'json'
ob = JSON.parse(str)

然后你会得到 json 格式的输出,这看起来像:

{"iso_code"=>"IT", "names"=>{"pt_br"=>"Itália", "es"=>"Italia", "ru"=>"Италия", "en"=>"Italy", "zh_cn"=>"意大利", "fr"=>"Italie", "de"=>"Italien", "ja"=>"イタリア共和国"}, "confidence"=>"99", "geoname_id"=>3175395}