【发布时间】:2016-07-25 21:18:56
【问题描述】:
我花了最后几个小时尝试手动(没有 Active Record 来创建这样的结构,取自 API 的文档:
params_map = '{ "field1" => {"field1a"=>"some text"},
"field2" => {
"field2a" => "a",
"field2b" => "b",
"field2c" => "c",
"field2d" => {"field2d_a" => "2d_a"},
"field2e" => "e",
"items" => [
{ "items_a" => "1",
"items_b" => "2",
"items_c" => "3",
"items_d" => "4"
},
{ "items_e" => "5",
"items_f" => "6",
"items_g" => "7",
"items_h" => "8"
}]
},
"field3" => "field3 text",
"field4" => "field4 text"}'
params_map_eval = eval(params_map)
如何在 Ruby 中创建它?我尝试使用Hash.new 将其创建为哈希,也将其创建为 JSON,但我未能将其他字段添加/附加到大 JSON。
items 将是一个循环,我将从数据库中填充它,但是如何在 Ruby 中创建这个结构?
【问题讨论】:
-
我不确定是否有更新 JSON 的好方法。是否可以将其用作哈希,然后在完成处理后将其转换为 JSON?
-
是的,这应该不是问题,因为最终结构将如上所示。我通过哈希尝试了它,但我在连接哈希项时失败了。
-
您可以使用
Hash#merge和#merge!。我认为#merge!更快并且使用更少的内存,因为它不需要复制数据。见ruby-doc.org/core-2.2.0/Hash.html#method-i-merge -
您的
params_map不是 JSON,它是哈希哈希的字符串版本。取下包装',您可以将其分配给params_map并获得一个 Ruby 哈希哈希。很难理解你的问题。 -
我同意@theTinMan。如果您有 JSON 字符串,请使用 JSON#parse 将其转换为 Hash,然后按照您喜欢的方式继续操作。
标签: ruby-on-rails ruby json hash