簡體   English   中英

使用json.parse更新散列數組中的值

[英]Update value in hash array with json.parse

我有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">

因此,當我調用a.value ,它將返回=> "[{"ssid":"LVL6-Staff","password":"987654321","dhcp":"Enabled"}]"

那么,我想獲得密碼的價值:

x = JSON.parse(a.value)
x.last['password']
=> "987654321"

我的問題是,在獲取密碼值后,我想將密碼值更新為“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(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"}]

剛剛在irb中測試過

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM