Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JSON对象转换为rails对象_Javascript_Ruby On Rails_Json_Ruby On Rails 3_Parsing - Fatal编程技术网

Javascript 将JSON对象转换为rails对象

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对象,其外观如

我使用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对象,其外观如下:

[
  { :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的帖子中所示,自己对键进行符号化。