2016-11-08 3 views
1

I a = first haben dieUpdate-Wert in Hash-Array mit JSON.parse

ist
=> <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"> 

Also, wenn ich a.value nennen, wird es => "[{"ssid":"LVL6-Staff","password":"987654321","dhcp":"Enabled"}]"

dann wieder, ich wollte den Wert für Passwort erhalten:

Meine Frage ist, nachdem ich das Passwort erhalten habe, möchte ich den Passwortwert auf '123456789' aktualisieren und speichern. Wie erreiche ich das?

Antwort

2

Dies sollte einfach sein.

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\"}]" 
+0

seine gearbeitet .. aber wie es speichern zu machen? Wenn also "a.value", wird das neue Passwort (123456) angezeigt. – AmirolAhmad

+1

Angenommen, hier ist ein Modellobjekt, können Sie 'a.value = new_string' und' a.save! 'machen. –

+0

können Sie bitte versuchen json.first.merge! (Passwort: "123456") –

1
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"}] 

Just in irb getestet