AnApprentice
AnApprentice

Reputation: 110950

Rails - Building a JSON object with multiple items

currently I am creating a JSON object as follows:

@comments = Array.new

comments.collect do |comment|
  @comments << {
    :id => comment.id,
    :content => html_format(comment.content),
    :created_at => comment.created_at
  }
end

@comments.to_json

And this returns something like this:

[{"created_at":"2011-03-02T09:17:27-08:00","content":"<p>Random.......</p>","id":734}, {"created_at":"2011-03-02T09:17:27-08:00","content":"<p>asdasd.......</p>","id":714}, {"created_at":"2011-03-01T09:17:27-08:00","content":"<p>Random.......</p>","id":134}, {"created_at":"2011-03-01T02:17:27-08:00","content":"<p>dasdasdasdasd.......</p>","id":3124}]

Problem here is that I need to include a few other items that aren't arrays. What I would like is the JSON object to look something like this:

[comments: {"created_at":"2011-03-02T09:17:27-08:00","content":"<p>Random.......</p>","id":734}, {"created_at":"2011-03-02T09:17:27-08:00","content":"<p>asdasd.......</p>","id":714}, {"created_at":"2011-03-01T09:17:27-08:00","content":"<p>Random.......</p>","id":134}, {"created_at":"2011-03-01T02:17:27-08:00","content":"<p>dasdasdasdasd.......</p>","id":3124}, last_load: "123123123123", last_view: "zxczcxzxczxc"]

Any ideas on how I can take what I have above, and expand it to pass additional items other than the comments array?

Thank you!

Upvotes: 2

Views: 5972

Answers (1)

jdl
jdl

Reputation: 17790

Add your list to a hash, and then call to_json on the hash.

> a = [1,2,3]
 => [1, 2, 3] 
> h = {:comments => a, :foo => "bar"}
 => {:foo=>"bar", :comments=>[1, 2, 3]} 
> h.to_json
 => "{\"foo\":\"bar\",\"comments\":[1,2,3]}" 

Upvotes: 5

Related Questions