【问题标题】:Create nested hashes in ruby and save it into JSON在 ruby​​ 中创建嵌套哈希并将其保存到 JSON
【发布时间】:2017-05-08 06:10:20
【问题描述】:

您好,我是 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)

感谢您的时间和帮助。

【问题讨论】:

  • 你说的似乎不起作用是什么意思?你有错误吗?意想不到的结果?你有什么问题?
  • 好吧,当我尝试将值添加到哈希中时:“Teachers”:{}
  • ....我的代码只是覆盖了 "Teachers":{} where is located "Student":{} 。而且我的代码也复制了插入得到这个结果: {"School":{"Teachers":{},"Teachers":{"Info i>":{},"":{}}}}

标签: json ruby ruby-hash


【解决方案1】:

你的问题是:

{"Student": {}}
# {:Student=>{}}

:Student

而不是

"Student"

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

{"Student" => {}}

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

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

这对调试没有帮助。

【讨论】:

    【解决方案2】:

    试试这个...

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

    这将使用空内容以所需结构初始化您的哈希。

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 2021-02-03
      • 1970-01-01
      • 2011-12-26
      • 2019-02-21
      • 2019-08-08
      • 1970-01-01
      • 2013-11-13
      相关资源
      最近更新 更多