2012-09-25 71 views
2

我有一個JSON文件中的數據轉儲,我試圖將其引入到我的應用程序中,但我認爲它需要一些預處理,只是不確定最好的方式來執行此操作。將JSON導入Rails

該文件的格式是這樣的,數據不是一個JSON數組,而是每一行都是一個完整的JSON數組。看起來像:

{"username": "Bob", "id": 123456} 
{"username": "Jane", "id": 456123} 
{"username": "Paul", "id": 789456} 
{"username": "Mary", "id": 159794} 

在一行的末尾沒有逗號的劃界問題 - 無支架等當我嘗試拉這,通過我的種子JSON.parse它拋出錯說 - 不喜歡缺乏適當的格式,並希望它作爲一個完整的JSON數據集,而不是每一行都是它自己的集合。

拉入這些數據的最佳方法是什麼?謝謝!

回答

4

我不確定你在導入數據後對你的數據意味着什麼,我假設你想把它插入到數據庫中。所以我需要一個自動化的解決方案潛在的大文件 -

task :import_users do 
    File.open('/path/to/your.file', 'r') do |file| 
    file.each do |line| 
     user_attrs = JSON.parse line 
     User.create! user_attrs 
    end 
    end 
end 
+0

謝謝克萊門斯 - 讓我們一起去看看它是如何工作的。 – matthewvb

+0

工作很好 - 就是我需要的!謝謝! – matthewvb

0

你總是可以逐行閱讀,並分別解析每一行。儘管這可能不是非常優化。舉個例子:File.readlines('filename').each { |line| ... }(僅在1.9+)

0

如果文件不是太大,你可以將其轉換爲:

[ 
{...}, 
{...}, 
{...} 
] 

或者,如果速度不是太挑剔了,你可以遍歷每一行並導入它。

+0

感謝異丙基苯:

我會寫一耙的任務是這樣的。 – matthewvb