所以我正在尝试将信息添加到我的 .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/