ruby - 如何使用 Ruby 将数据追加/添加到 JSON 文件

标签 ruby

所以我正在尝试将信息添加到我的 .json 文件中,包括名字和姓氏, 在 kali linux 中通过终端运行脚本。

我没有取得太大进展过去 5 个小时我一直在网上搜索以找到解决此问题的方法,但没有取得太大进展。 这让我只能在这里发布这个,有人知道如何解决这个错误吗?

  • 终端错误
Traceback (most recent call last):
        4: from /root/Desktop/JSON_thingy.rb:8:in `<main>'
        3: from /root/Desktop/JSON_thingy.rb:8:in `open'
        2: from /root/Desktop/JSON_thingy.rb:9:in `block in <main>'
        1: from /usr/lib/ruby/vendor_ruby/json/common.rb:156:in `parse'
/usr/lib/ruby/vendor_ruby/json/pure/parser.rb:118:in `parse': source in not valid JSON! (JSON::ParserError)
  • 代码
require 'json'
require 'json/pure'

json = {"first_name" => "john", "last_name" => "doe"}

initial_json = File.read('/root/Desktop/jsonDatabase.json')

File.open("/root/Desktop/jsonDatabase.json","w") do |f|
  f.puts JSON.pretty_generate(JSON.parse(initial_json) << json )
end 
  • JSON
[
{
 "first_name": "albert",
 "last_name": "einstein"
},
{
 "first_name": "edgar",
 "last_name": "poe"
}
]

最佳答案

当然,简单地将两个 JSON 字符串连接在一起是行不通的,并且会导致无效的 JSON。在您的示例中,您尝试添加的散列不会在数组中结束,而是在后面。

正确的方法是读取现有的 JSON 文件并将其解析为 RUBY 数据结构,然后将 Ruby 中的新哈希添加到数组中,然后再将所有内容写回 JSON。

require 'json'

filename = '/root/Desktop/jsonDatabase.json'

hash = { "first_name" => "john", "last_name" => "doe" }

array = JSON.parse(File.read(filename)
array << hash

File.open(filename, 'w') do |f|
  f.write(JSON.pretty_generate(array))
end

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

相关文章:

mysql - 无法使用 Ruby on Rails 从 MySql 按 ID 查找数据

ruby-on-rails - Rails - 如何使用查找或创建

ruby-on-rails - 从 Rails 应用程序生成 Microsoft OOXML (docx) 的最佳方法是什么?

html - 清理 HTML 并关闭不完整的标签

ruby-on-rails - 如何使用 3 个或语句编写 Pundit 策略?

sql - 使用 ActiveRecord 为多对多查询设置条件

ruby-on-rails - 在 Ruby on Rails 中编码字符串

ruby - 使用 Ruby 1.9.2 p290 从 S3 读取小于 10K 的 CSV 文件

sql - 在 ActiveRecord 中搜索 jsonb 列

ruby-on-rails - 在调用操作之前检查 rails 中是否存在 header 属性