Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用json.parse更新哈希数组中的值_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 使用json.parse更新哈希数组中的值

Ruby on rails 使用json.parse更新哈希数组中的值,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有a=first,它是 => <Ng::EntityConfiguration id: 15881, entity_id: 1, entity_type: "Ng::Company", key: "wpa2.psk", value: "[{"ssid":"LVL6-Staff","password":"987654321", created_at: "2016-11-08 05:13:04", updated_at: "2016-11-08 05:13:04", name: "WI

我有
a=first
,它是

=> <Ng::EntityConfiguration id: 15881, entity_id: 1, entity_type: "Ng::Company", key: "wpa2.psk", value: "[{"ssid":"LVL6-Staff","password":"987654321", created_at: "2016-11-08 05:13:04", updated_at: "2016-11-08 05:13:04", name: "WIFI/Level 6">
我的问题是,在获得密码值后,我想将密码值更新为“123456789”并保存它。如何做到这一点?

这应该很简单

string = '[{"ssid":"LVL6-Staff","password":"987654321","dhcp":"Enabled"}]'  # your `a.value`
json = JSON.parse(string)
new_password = '123456'       # or whatever
json.first['password'] = new_password
new_string = json.to_json     # "[{\"ssid\":\"LVL6-Staff\",\"password\":\"123456\",\"dhcp\":\"Enabled\"}]"

刚刚在irb中测试过,效果很好。。但如何让它节省?因此,当i
a.value
时,它将显示新密码(123456),假设
a
这里是一个模型对象,您可以执行
a.value=new\u string
a.save。请尝试json.first.merge!(密码:“123456”)
string = '[{"ssid":"LVL6-Staff","password":"987654321","dhcp":"Enabled"}]'  # your `a.value`
json = JSON.parse(string)
new_password = '123456'       # or whatever
json.first['password'] = new_password
new_string = json.to_json     # "[{\"ssid\":\"LVL6-Staff\",\"password\":\"123456\",\"dhcp\":\"Enabled\"}]"
irb(main):010:0> v
=> [{:ssid=>"LVL6-Staff", :password=>"987654321", :dhcp=>"Enabled"}]
irb(main):020:0> v[0][:password]
=> "987654321"
irb(main):021:0> v[0][:password] = "123123"
=> "123123"
irb(main):023:0> v
=> [{:ssid=>"LVL6-Staff", :password=>"123123", :dhcp=>"Enabled"}]