2011-05-13 12 views
2

MongoDBデータベース(@bs)から情報を取得しています。 @bsには興味のない情報がたくさんあるので、必要なのはすべての情報を循環させ、必要な情報を持って新しいオブジェクトを作成することです。Rails 3:データの配列から有効なJSONオブジェクトを作成する

私は新しい配列(@final)を作成しました。情報を取得して@finalに追加しています。しかし、情報がそこに届いているようですが、JSONに変換すると、有効な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"]  

助けてください:私は@final.jsonに構築することは、このです。

ありがとうございました

答えて

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 [@ Email] - それは文字列 "Email"を返します – Donald

+0

配列を 'json'に変換した後に文字列があります。文字列の '[]'演算子は、見つかった文字列の中で一致するものを探します。 @finalが配列だったとしても、配列オブジェクトの1つの電子メール値を取得するには、@ final.first [:Email] 'のような処理をしなければなりません。 –

+0

JSONに変換した後、ドキュメントのメンバーにアクセスするにはどうすればいいですか? – Donald

関連する問題