Javascript 将JSON对象转换为rails对象
我使用JSON.stringify(object)在html视图中创建一个JSON对象,该对象输出以下JSON对象Javascript 将JSON对象转换为rails对象,javascript,ruby-on-rails,json,ruby-on-rails-3,parsing,Javascript,Ruby On Rails,Json,Ruby On Rails 3,Parsing,我使用JSON.stringify(object)在html视图中创建一个JSON对象,该对象输出以下JSON对象 { "0X1W6": "{\"type\":\"Hourly\",\"hr\":\"12\",\"min\":\"30\",\"every_hr\":\"5\"}", "Tk18f": "{\"type\":\"Daily\",\"hr\":\"12\",\"min\":\"30\",\"days_checked\":[1,4]}" } 如何将其转换为ruby对象,其外观如
{
"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]}
]
我假设您正在将JSON从JavaScript传递到服务器。在服务器上,可以使用“json”gem解析json,如下所示:
o=json.parse json_string
如果您确实需要组合数据结构(删除键0X1W6和Tk18f),则必须将ruby哈希后处理到数组中。使用相同的技术,您可以将字符串键转换为符号。我假设您正在将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
我希望这能有所帮助。如果我理解正确,您有JSON,需要ruby哈希。在rails中,这可以通过ActiveSupport::Json.decode(Json)完成,而“Json”是一个字符串。但这并不能给出您想要的确切结果,您还必须:
ActiveSupport::Json.decode(json).values.symbolize_keys
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
我希望这有帮助。result=[]
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
z=ActiveSupport::JSON.decode('{
“0X1W6:“{\”类型“:”小时“,”小时“:”12“,”分钟“:”30“,”每小时“:”5“,
Tk18f:“{\”类型\“:”每日\“,”小时\“:”12 \“,”分钟\“:”30 \“,”检查天数\“:[1,4]}”
}')
z、 每个|u值do|i|
x={}
ActiveSupport::JSON.decode(i).each{k,v|
x[k.to_sym]=(v.class==字符串和&v.to_i.to_s==v)?v.to_i:v
}
结果result=[]
z=ActiveSupport::JSON.decode('{
“0X1W6:“{\”类型“:”小时“,”小时“:”12“,”分钟“:”30“,”每小时“:”5“,
Tk18f:“{\”类型\“:”每日\“,”小时\“:”12 \“,”分钟\“:”30 \“,”检查天数\“:[1,4]}”
}')
z、 每个|u值do|i|
x={}
ActiveSupport::JSON.decode(i).each{k,v|
x[k.to_sym]=(v.class==字符串和&v.to_i.to_s==v)?v.to_i:v
}
result JSON.parse JSON_string将其解析为{0X1W6=>“{type:Hourly….},因此第二个散列将存储为string而不是hashJSON.parse JSON_string将其解析为{0X1W6=>”{type:Hourly….}因此,第二个散列被存储为字符串而不是散列。我正在获取未定义的方法“symbol_keys”。我假设您使用的是rails,它通过activesupport在散列上提供此方法。没有rails,您可以要求activesupport的这部分,也可以像Sector的帖子中所示的那样对键进行符号化。我正在获取未定义的方法od`symbol_keys'我假设您使用的是rails,它通过activesupport在哈希上提供此方法。如果没有rails,您可以需要activesupport的这一部分,也可以像Sector的帖子中所示,自己对键进行符号化。