2011-05-13 63 views
2

我從我的MongoDB數據庫(@bs)獲取信息。 @bs有很多我不感興趣的信息,所以我需要的是循環所有信息並用我需要的信息創建一個新對象。爲此,我創建了一個新數組(@final),並且我正在獲取信息並將其添加到@final。信息似乎到達那裏,但是,當我將它轉換爲JSON時,它不是有效的JSON對象。我打算在@final.json創建是這樣的:Rails 3:從數據數組創建一個有效的JSON對象

{ Something: [ {Email: "[email protected]", At: "date", ....}, {...}, ....] } 

但是當我做to_json我得到[["At: date","Email: [email protected]","Message-id: .....

@bs = coll.find("headers.from" => email, "date" => {"$gte" => initial_date, "$lte" => Time.now.utc}) 

@bs = @bs.to_a.map { |obj| obj.delete("completo"); obj.delete("_id"); obj.delete("date"); obj.delete("headers" => "content_type"); obj } 

@final = Array.new 

@bs.each do |a| 
    elem = Array.new 
    elem << "At: #{a["date"]}" 
    elem << "Email: #{a["headers"]["to"]}" 
    elem << "Message: #{a["headers"]["message_id"]}" 
    elem << "Type: #{a["headers"]["status"]}" 
    @final << elem 
end 

puts @final 
@final = @final.to_json 
puts @final["Email"]  

請幫助。

謝謝

回答

1

在你的循環中,創建一個散列而不是一個數組。 to_json應該使這個JSON對象。

@bs.each do |a| 
    @final << { :At => a['date'], :Email => a['headers']['to'], :Message => a['headers']['message_id'], :Type => a['headers']['status'] } 
end 
+0

謝謝。我這樣做,但後來我不能做@final = @ final.to_json放@final ['電子郵件'] - 它返回字符串「電子郵件」 – Donald 2011-05-13 11:09:45

+0

將數組轉換爲'json'後,你有一個字符串。字符串上的'[]'運算符在字符串中查找匹配項,找到它。即使@final是數組,你也必須像'@ final.first [:Email]'那樣獲取某個數組對象的email值。 – 2011-05-13 11:13:17

+0

因此,將其轉換爲JSON後,如果我想訪問文檔的成員,該怎麼辦? – Donald 2011-05-13 11:15:56

相關問題