diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2009-06-05 18:25:07 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2009-06-08 13:21:30 -0700 |
commit | 00ee990443189649e481b2c30945e7a1029d8280 (patch) | |
tree | c30e731055da3a6f67ea4c154059ff7245ef6e1c /activesupport/lib/active_support/json/encoders/hash.rb | |
parent | 5e1b46d4c285124737abe2e08dec97e4af1f4be7 (diff) | |
download | rails-00ee990443189649e481b2c30945e7a1029d8280.tar.gz rails-00ee990443189649e481b2c30945e7a1029d8280.tar.bz2 rails-00ee990443189649e481b2c30945e7a1029d8280.zip |
JSON: split encoding and coercion
Diffstat (limited to 'activesupport/lib/active_support/json/encoders/hash.rb')
-rw-r--r-- | activesupport/lib/active_support/json/encoders/hash.rb | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/activesupport/lib/active_support/json/encoders/hash.rb b/activesupport/lib/active_support/json/encoders/hash.rb deleted file mode 100644 index 4771484843..0000000000 --- a/activesupport/lib/active_support/json/encoders/hash.rb +++ /dev/null @@ -1,51 +0,0 @@ -require 'active_support/core_ext/array/wrap' - -class Hash - private - # Returns a JSON string representing the hash. - # - # Without any +options+, the returned JSON string will include all - # the hash keys. For example: - # - # { :name => "Konata Izumi", 'age' => 16, 1 => 2 }.to_json - # # => {"name": "Konata Izumi", "1": 2, "age": 16} - # - # The keys in the JSON string are unordered due to the nature of hashes. - # - # The <tt>:only</tt> and <tt>:except</tt> options can be used to limit the - # attributes included, and will accept 1 or more hash keys to include/exclude. - # - # { :name => "Konata Izumi", 'age' => 16, 1 => 2 }.to_json(:only => [:name, 'age']) - # # => {"name": "Konata Izumi", "age": 16} - # - # { :name => "Konata Izumi", 'age' => 16, 1 => 2 }.to_json(:except => 1) - # # => {"name": "Konata Izumi", "age": 16} - # - # The +options+ also filter down to any hash values. This is particularly - # useful for converting hashes containing ActiveRecord objects or any object - # that responds to options in their <tt>to_json</tt> method. For example: - # - # users = User.find(:all) - # { :users => users, :count => users.size }.to_json(:include => :posts) - # - # would pass the <tt>:include => :posts</tt> option to <tt>users</tt>, - # allowing the posts association in the User model to be converted to JSON - # as well. - def rails_to_json(options = nil, *args) #:nodoc: - hash_keys = self.keys - - if options - if except = options[:except] - hash_keys = hash_keys - Array.wrap(except) - elsif only = options[:only] - hash_keys = hash_keys & Array.wrap(only) - end - end - - result = '{' - result << hash_keys.map do |key| - "#{ActiveSupport::JSON.encode(key.to_s)}:#{ActiveSupport::JSON.encode(self[key], options, *args)}" - end * ',' - result << '}' - end -end |