获取json文件然后使用ruby操作数据

Pra*_*pta 2 ruby json

我使用ruby版本2.0.0,我有一个demo.json看起来像这样的文件:

{ "demo": 
  { 
    "rama" : { "Name": "demo" },
    "krishna" : { "Name": "hare","place": "bharat", "hawa": { "maina": "tota"} } 
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我尝试通过这种方式操作json文件:

require 'json'
options = {}
options[:demo] = "kailash"
 File.open("demo.json","w") do |f|

    f.write(JSON.pretty_generate(options))

end
Run Code Online (Sandbox Code Playgroud)

我想替换一些值并在现有JSON文件中添加一些新的键值对,并且不想完全替换整个JSON文件.有没有办法做到这一点?

Uri*_*ssi 6

您必须先读取并解析文件,然后进行更改,最后可以使用更新的对象覆盖文件:

require 'json'

options = JSON.parse(IO.read('demo.json'))
options['demo']['kailash'] = { "Name" => "new" }

File.open("demo.json","w") do |f|

    f.write(JSON.pretty_generate(options))

end
Run Code Online (Sandbox Code Playgroud)

输出文件:

{
  "demo": {
    "rama": {
      "Name": "demo"
    },
    "krishna": {
      "Name": "hare",
      "place": "bharat",
      "hawa": {
        "main": "tota"
      }
    },
    "kailash": {
      "Name": "new"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)