2011-05-13 5 views
2

Я беру информацию из базы данных MongoDB (@bs). @bs имеет тонны информации, которая мне неинтересна, поэтому мне нужно, чтобы цитировать всю информацию и создавать новый объект с необходимой мне информацией.Рельсы 3: Создайте действительный объект JSON из массива данных

Для этого я создал новый массив (@final), и я получаю информацию и добавляю ее в @final. Похоже, что информация поступает туда, когда я конвертирую ее в JSON, это не действительный объект JSON. То, что я намерен создать в @final.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 puts @final ['Email'] - Он возвращает строку «Email» – Donald

+0

После преобразования массива в 'json' у вас есть строка. оператор '[]' в строке ищет совпадение в строке, которую он находит. Даже если @final был массивом, вам нужно будет сделать что-то вроде '@ final.first [: Email]', чтобы получить значение электронной почты для одного из объектов массива. –

+0

Итак, после преобразования его в JSON, как мне сделать, если я хочу получить доступ к членам документа? – Donald

 Смежные вопросы

  • Нет связанных вопросов^_^