The way Rails handles root nodes in JSON and XML serialization is inconsistent. This has been discussed before:
https://rails.lighthouseapp.com/projects/8994/tickets/2584-232-activeresource-json-doesnt-send-parameters-with-root-node This seems mostly taken care of with ActiveModel::Base.include_root_in_json, especially if/when it ends up in ActiveResource. However, there is also the issue of how Enumerables are serialized. This ticket would have me believe that it's a solved issue in Rails 3: https://rails.lighthouseapp.com/projects/8994/tickets/3812-collection-root-for-enumerable-to_json But how is this being taken care of exactly? It seems like, for consistency's sake, we'd want the structure of JSON serialization to be as close to Hash#from_xml's output as possible. This is the state of affairs with 3.0.0.beta2 (the last two expressions are the most important for this discussion): Loading development environment (Rails 3.0.0.beta2) irb(main):001:0> foo = Thing.first => #<Thing id: 1, name: "foo"> irb(main):002:0> Thing.include_root_in_json = true => true irb(main):003:0> puts foo.to_json {"thing":{"name":"foo","id":1}} => nil irb(main):004:0> Hash.from_xml(foo.to_xml) => {"thing"=>{"name"=>"foo", "id"=>1}} irb(main):005:0> puts [foo].to_json [{"thing":{"name":"foo","id":1}}] => nil irb(main):006:0> Hash.from_xml([foo].to_xml) => {"things"=>[{"name"=>"foo", "id"=>1}]} I think we should make the default JSON serialization output [foo].to_json like this: {"things": [{"name":"foo","id":1}]} ...in order to be consistent with XML. Thoughts? -James -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
