2011-06-30 28 views
5

Załóżmy, że mamy następujący JSON obiekt opisujący osobę:JSON manipulacja obiekt

{ 
"firstName": "John", 
"lastName": "Smith", 
"age": 25, 
"address": 
{ 
    "streetAddress": "21 2nd Street", 
    "city": "New York", 
    "state": "NY", 
    "postalCode": "10021" 
}, 
"phoneNumber": 
[ 
    { 
     "type": "home", 
     "number": "212 555-1234" 
    }, 
    { 
     "type": "fax", 
     "number": "646 555-4567" 
    } 
] 

}

Czy ktoś może zaproponować najbardziej eleganckie i najbardziej efektywny sposób manipulowania poprzedniego obiektu w Rails 3 ?

Chcę być w stanie:

  1. Dodaj kolejny element jak "FirstName", "Nazwisko", itd.
  2. Usunięcie istniejącego elementu
  3. Zmień element bez usuwania go lub dodawania nowego. (np. zmień imię na "Nick")

Z góry dziękuję.

PS. Wolę manipulować nim w kontrolerze!

+0

Czy możesz podać nieco więcej kontekstu? Na przykład, gdzie chcesz nim manipulować? w kontrolerze, w javascript, w kuchni przy robieniu latte? – jaydel

+0

Dzięki kolego. Zmieniono pytanie! – glarkou

Odpowiedz

25

tylko analizować je i zmienić go

hash = JSON.parse(json_data) 
hash["firstname"] = "John" 
hash.delete("lastname") 
new_json = hash.to_json 

PS: JSON.parse może nie działać - zależy to od używanej biblioteki JSON. spróbuj zamiast tego:

ActiveSupport::JSON.decode(json_data) 
+0

Co się stanie, jeśli chcę usunąć, edytować lub dodać pole do adresu? Na przykład usunięcie pola "streetAddress"? Czy możesz podać przykład również tego? – glarkou

+1

zagnieżdżone obiekty są analizowane tak samo jak hash ["address"] ["streetAddress"] = "42" i hash ["address"]. Delete ("city") – keymone