服务器使用返回嵌套数据结构的JSON API。我尝试使用
我已经尝试了下面的代码,但它只能转换一层深度(不包括子哈希)。
JSON.parse
解析它,但默认情况下会将JSON字符串转换为字符串哈希表。
示例数据
{
"data"=>
{
"id"=>"1",
"type"=>"users",
"attributes"=>
{
"email"=>"tia_heller@lebsack.info",
"name"=>"Tanner Kreiger"
}
}
}
我已经尝试了下面的代码,但它只能转换一层深度(不包括子哈希)。
def json_body
str_hash = JSON.parse(response.body)
str_hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
end
我还尝试了Rails中的symbolize_keys
,但它只会将第一层键值转换为符号(见:data
,其余的内容相同),
{:data=>{"id"=>"1", "type"=>"users", "attributes"=>{"email"=>"darrion_hackett@weberharvey.io", "name"=>"Cleo Braun"}}}
如何递归地将嵌套的字符串哈希转换为符号哈希?
期望结果
所有的值都可以使用符号访问,例如json_response[:data][:attributes]
。
deep_symbolize_keys
方法 - 正是为了这些目的而存在的 ;) - Andrey Deinekorails
的。问题是关于ruby
的。 - abhijit