2014-01-25 22 views
1

我是Rails的新手,我一直試圖從我的控制器中的數據庫中獲取JSON對象的數組,以組裝扁平數據結構以傳入我的交叉過濾器(我做了一些dc.js可視化)。我已經成功地獲得對象的嵌套數組,像這樣:構建和展平json對象數組rails

['class': 'biology', 'category': 'science', 'students': [{'name': 'sarah', 'year':freshman}, {'name':'bob', 'year': 'sophomore'}] ] 

這是我的目標,以實現結構:我已經成功地建立這些數組

[ {'name':'sarah', 'year':'freshman', 'class': 'biology', 'category': 'science'}, {'name':'bob', 'year': 'sophomore', 'class': 'biology', 'category': 'science'}] 

JSON對象在我的控制器中,通過我的控制器與學生關聯的類,但是我已經完全打開了關於如何將數據集合理地排列爲UN嵌套對象數組的牆壁。我基本上想爲每個學生展開一個對象,並將其作爲一個對象表示在新數組中。任何指針將不勝感激。

到目前爲止,我遇到利用:

JSON.parse(objects).each do |obj| 
    #flatten json here 
end 

難道僅僅是一個通過學生的屬性迭代的事,併爲每個學生創造與所有相關屬性的新對象?任何正確的方向指針將不勝感激。

回答

1

呀,你會做這樣的事情:

students_with_classes = JSON.parse(objects).map do |obj| 
    obj['students'].map { |student| student.merge(obj.except('students')) } 
end.flatten 
+0

感謝輸入!它似乎在工作,但我現在最終得到的是一個嵌套數組。[[{'name':'sarah','year':'freshman','class':'biology','category': 'science'}],[{'name':'bob','year':'二年級','class':'biology','category':'science'}]]。我是否將陣列弄平了? – user1333781

+0

是的,我剛剛爲你更新了答案。 – aledalgrande

+0

感謝您的意見。在另一個說明中,我注意到當分析JSON對象時,JSON.parse.map會更改對象類型。我檢查了類型,並將其作爲在ActiveRecord關係上調用的JSON字符串傳遞,但映射和解析後的最終結果是一個數組......並且當我嘗試訪問最終結果數組的單個對象時,它可以作爲個人角色訪問,也可以拉出一個對象。如何將其轉換回json字符串以訪問單個字符與單個字符? – user1333781