2012-10-25 63 views
1

我有一個複雜的輸入JSON,這樣的事情:管理複雜JSON

@json = {"project":"bla", 
    "analysis": {"id":"123","title":"Test"},  
    "data":{"axis": {"name":"column", "label":"demo","values": ["one", "two"]}, 
      "series": [{"label":"text", "values":["1", "2", "3"]}, 
        {"label":"text2", "values":["4", "5", "6"]} 
]}} 

(更復雜和長度,這個例子)

2問題:

  1. 它存在一個RoR方法,可以在飛行中刪除json中的某些東西?像 @json.destroy['analysis'],只消除「分析」鍵值對?

  2. 我該如何瀏覽(例如)該系列的值?如果json使用do each簡單,我可以這樣做,但是在這裏我必須做一個do each的協調?

回答

1

您可以將JSON轉換成散列,取出鑰匙,然後再轉換回JSON:

require "json" 
hash = JSON.parse(@json) 
hash.delete("analysis") 
@json = hash.to_json 
+0

謝謝你,好主意。並在JSON中導航你有任何解決方案?也許使用哈希?但我怎麼能在這個多維json? – damoiser

+0

JSON的整個結構將轉變爲Ruby對象。任何被花括號包圍的東西都將成爲一種散列。任何由方括號包圍的東西都將成爲一個數組。像平常一樣瀏覽這些結構(hash.each,hash [b] [c]等)。 – 2012-10-29 14:52:54

+0

完美!謝謝! – damoiser