2011-06-30 19 views
5

Supongamos que tenemos el siguiente objeto JSON que describe a una persona:JSON manipulación de objetos

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

}

Puede alguien sugerir la forma más elegante y más eficiente para manipular el objeto anterior en Rails 3 ?

Quiero ser capaz de:

  1. Añadir otro elemento como el "nombre", "apellidos", etc.
  2. Eliminar un elemento existente
  3. Cambiar un elemento sin eliminarlo o agregar uno nuevo. (por ejemplo, cambiar el nombre a "Nick")

Gracias de antemano.

PS. ¡Prefiero manipularlo en el controlador!

+0

¿Puede dar un poco más de contexto? Por ejemplo, ¿dónde estás buscando manipularlo? en el controlador, en javascript, en tu cocina mientras preparas un café con leche? – jaydel

+0

Gracias amigo. Cambió la pregunta! – glarkou

Respuesta

25

acaba de analizar y cambiarlo

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

P. S. Es posible que JSON.parse no funcione; depende de la biblioteca JSON que esté utilizando. intente esto en su lugar:

ActiveSupport::JSON.decode(json_data) 
+0

¿Qué sucede si quiero eliminar, editar o agregar un campo a la dirección? Por ejemplo, eliminar el campo "streetAddress"? ¿Puedes dar un ejemplo para eso también? – glarkou

+1

los objetos anidados se analizan también así que simplemente haz hash ["dirección"] ["streetAddress"] = "42" y hash ["dirección"]. Delete ("ciudad") – keymone

Cuestiones relacionadas