Манипулирование объектами JSON - PullRequest
5 голосов
/ 30 июня 2011

Предположим, у нас есть следующий объект JSON, который описывает Person:

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

}

Может кто-нибудь предложить наиболее элегантный и эффективный способ манипулирования предыдущим объектом в Rails3?

Я хочу иметь возможность:

  1. Добавить еще один элемент, например, «имя», «фамилия» и т. Д.
  2. Удалить существующий элемент
  3. Изменить элемент, не удаляя его и не добавляя новый.(например, измените имя на «Ник»)

Заранее спасибо.

PS.Я предпочитаю манипулировать им в контроллере!

1 Ответ

25 голосов
/ 30 июня 2011

просто проанализируйте и измените его

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

PS JSON.parse может не работать - это зависит от того, какую библиотеку JSON вы используете.попробуйте это вместо:

ActiveSupport::JSON.decode(json_data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...