2011-06-30 75 views
5

让我们假设我们有一个描述人的以下JSON对象:JSON对象操作

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

}

有人能提出最优雅,最有效的方式来操作的Rails 3以前的对象?

我希望能够到:

  1. 添加其他元素,如 “名字”, “姓氏”,等等。
  2. 删除现有元素
  3. 更改元素而不删除它或添加一个新元素。 (例如,改名为“尼克”)

在此先感谢。

PS。我更喜欢在控制器中操作它!

+0

你能给出更多的上下文吗?例如,你想在哪里操纵它?在控制器中,在JavaScript中,在你的厨房里拿铁咖啡? – jaydel

+0

感谢队友。改变了问题! – glarkou

回答

25

只是解析它,改变它

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

附: JSON.parse可能不起作用 - 这取决于您使用的是哪个JSON库。试试这个:

ActiveSupport::JSON.decode(json_data) 
+0

如果我想删除或编辑或添加一个字段来解决该怎么办?例如删除“streetAddress”字段?你能举一个例子吗? – glarkou

+1

嵌套对象也被解析,所以简单地做hash [“address”] [“streetAddress”] =“42”和hash [“address”]。delete(“city”) – keymone