2011-06-30 78 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