在 ruby 中创建嵌套哈希并将其保存到 JSON

Create nested hashes in ruby and save it into JSON

嗨,我是 ruby 的新手,我正在尝试将嵌套哈希保存到 JSON 文件中,最终的哈希如下所示:

{"**School**":{"*Students*":{ "Info":{},"Values":{} },"*Teachers*":{ "Info":{},"Values":{} } } }

但最初哈希必须以空开头:

{"**School**":{} }

然后我需要在每个级别添加元素,如下所示:

{"**School**":{} ,"**Hospital**":{} }

{"**School**":{ "*Students*":{} } ,"**Hospital**":{} }

{"**School**":{ "*Students*":{ "*Info*":{ "Name": "Varchar" },"*Values*":{ "Name": "Jane" } } } ,"**Hospital**":{} }

我尝试了类似下面的方法,但它似乎不起作用:

hash = Hash.new 

hash[ "**School**" ] = {"Student":{}} 

hash[ "**School**" ][ "Student" ] = {"Info":{},"Values":{}}


File.open("saved.json","w") do |f|

f.write(hash.to_json)

感谢您的宝贵时间和帮助。

试试这个...

hash = Hash.new
hash[ "**School**" ] = {}
hash[ "**School**" ][ "Student" ] = {}
hash[ "**School**" ][ "Student" ]["Info"] = {}
hash[ "**School**" ][ "Student" ]["Values"] = {}

这将在所需结构中用空内容初始化您的散列。

你的问题是:

的关键
{"Student": {}}
# {:Student=>{}}

:Student

而不是

"Student"

要定义字符串键,请使用:

{"Student" => {}}

to_json 似乎并不关心键是符号还是字符串,并以相同的格式导出它们:

require 'json'
puts ({a: 1, "a" => 2}.to_json)
# {"a":1,"a":2}

这对调试没有帮助。