我在html视图中使用JSON.stringfy(object(创建了一个JSON对象,该对象输出以下JSON对象
{
"0X1W6": "{"type":"Hourly","hr":"12","min":"30","every_hr":"5"}",
"Tk18f": "{"type":"Daily","hr":"12","min":"30","days_checked":[1,4]}"
}
我如何将其转换为一个ruby对象,它看起来像这样:
[
{ :type => 'Hourly', :hr => 12, :min => 30, :every_hr => 5}
{ :type => 'Daily', :hr => 12, :min => 30, :days_checked => [1,4]}
]
result = []
z = ActiveSupport::JSON.decode( '{
"0X1W6": "{"type":"Hourly","hr":"12","min":"30","every_hr":"5"}",
"Tk18f": "{"type":"Daily","hr":"12","min":"30","days_checked":[1,4]}"
}')
z.each_value do|i|
x = {}
ActiveSupport::JSON.decode(i).each{|k,v|
x[k.to_sym] = (v.class == String && v.to_i.to_s == v) ? v.to_i : v
}
result << x
end
{
"0X1W6": "{"type":"Hourly","hr":"12","min":"30","every_hr":"5"}",
"Tk18f": "{"type":"Daily","hr":"12","min":"30","days_checked":[1,4]}"
}.to_json
我假设您正在将JSON从JavaScript传递到服务器。在服务器上,您可以使用"json"gem来解析json,如:o = JSON.parse json_string
。
如果您确实需要组合数据结构(删除键0X1W6和Tk18f(,则必须将您的ruby哈希后处理到一个数组中。使用相同的技术,可以将字符串键转换为符号。
如果我理解正确,您有JSON,并且想要一个ruby哈希。在rails中,这可以通过ActiveSupport::Json.decode(Json(来完成,而"Json"是一个字符串。但这不会给你你正在寻找的确切结果,你还必须做:
ActiveSupport::Json.decode(json).values.symbolize_keys
我希望这能有所帮助。