gpt4 book ai didi

ruby - 使用 Ruby 将数据附加到 JSON 文件中

转载 作者:太空宇宙 更新时间:2023-11-03 17:07:23 27 4
gpt4 key购买 nike

我正在尝试使用 ruby​​ 在 JSON 文件中写入/附加一些数据。我在以正确格式在 JSON 文件中写入数据时遇到问题。我已经在 temphash 中创建并存储了我的值。我想在现有的 JSON 文件中附加 temphash 的内容。我正在按照以下方式进行:

 tempHash = {"Group_Name" => @GroupName, "Group_Logo_Code" => @GroupLogoCode }

json = File.read('public/group.json')
secondJsonArray = JSON.parse(json)
secondJsonHash = Hash[*secondJsonArray]

jsonHash = []
jsonHash << secondJsonHash
jsonHash << tempHash

File.open("public/group.json","w") do |f|
f.puts JSON.pretty_generate(jsonHash)
end

这是在创建格式错误的 JSON。我没有得到预期格式的 JSON

下面是我期望的:

[ 
{
"Group_Name": "Group Name",
"Group_Logo_Code": "Group Logo code"
},
{
"Group_Name": "Group Name",
"Group_Logo_Code": "Group Logo code"
},
{
"Group_Name": "Group Name",
"Group_Logo_Code": "Group Logo code"
},
]

下面是我得到的:

[
{
"{\"{\\\"Group_Name\\\"=>\\\"Group Name\\\", \\\"Group_Logo_Code\\\"=>\\\"Group Logo code\\\"}\"=>{\"Group_Name\"=>\"Group Name\", \"Group_Logo_Code\"=>\"Group Logo code\"}}": {
"Group_Name": "Group Name",
"Group_Logo_Code": "Group Logo code"
}
},
{
"Group_Name": "Group Name",
"Group_Logo_Code": "Group Logo code"
}
]

如果有更好的方法,请告诉我。谁能帮我解决这个问题。提前致谢。

最佳答案

Uri Agassi's code是完美的,但我想解释一下 OP 代码中出了什么问题。

Hash[] 需要一个 key, value 对数组(作为单独的参数或数组数组):

Hash[:a, 1, :b, 2]        # => {:a=>1, :b=>2}
Hash[[[:a,1], [:b,2]]] # => {:a=>1, :b=>2}

但是原始的 JSON 包含哈希数组,它被解析为相应的 Ruby 对象,就像在简化的情况下一样:

[{:a => 1}, {:b => 2}]

当您在上述数组上使用 Ruby splat 运算符 * 时:

Hash[ *[{:a => 1}, {:b => 2}] ]

您有效地将单独的哈希作为键值对提供给哈希构造函数:

Hash[ {:a => 1}, {:b => 2} ]  # => {{:a=>1} => {:b=>2}}

因此,从本质上讲,您得到了您所要求的:您将一个哈希数组转换为一个哈希哈希,然后将其添加到一个空白数组并填充另一个哈希。

正确的解决方案

只是为了使原始代码只需最少的更改即可工作(但仍请查看 Uri's solution ):

tempHash = {"Group_Name" => @GroupName, "Group_Logo_Code" => @GroupLogoCode }

json = File.read('public/group.json')
secondJsonArray = JSON.parse(json)

secondJsonArray << tempHash

File.open("public/group.json","w") do |f|
f.puts JSON.pretty_generate(secondJsonArray)
end

关于ruby - 使用 Ruby 将数据附加到 JSON 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23292530/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com