matches YAML-formatted dates
Parses a JSON string (JavaScript Object Notation) into a hash. See www.json.org for more info.
ActiveSupport::JSON.decode("{\"team\":\"rails\",\"players\":\"36\"}") => {"team" => "rails", "players" => "36"}
# File lib/active_support/json/decoding.rb, line 16 def decode(json, options ={}) data = MultiJson.load(json, options) if ActiveSupport.parse_json_times convert_dates_from(data) else data end end
Dumps objects in JSON (JavaScript Object Notation). See www.json.org for more info.
ActiveSupport::JSON.encode({ team: 'rails', players: '36' }) # => "{\"team\":\"rails\",\"players\":\"36\"}"
# File lib/active_support/json/encoding.rb, line 33 def self.encode(value, options = nil) Encoding::Encoder.new(options).encode(value) end
# File lib/active_support/json/decoding.rb, line 25 def engine MultiJson.adapter end
# File lib/active_support/json/decoding.rb, line 30 def engine=(name) MultiJson.use(name) end
Returns the class of the error that will be raised when there is an error in decoding JSON. Using this method means you won't directly depend on the ActiveSupport's JSON implementation, in case it changes in the future.
begin obj = ActiveSupport::JSON.decode(some_string) rescue ActiveSupport::JSON.parse_error Rails.logger.warn("Attempted to decode invalid JSON: #{some_string}") end
# File lib/active_support/json/decoding.rb, line 52 def parse_error MultiJson::DecodeError end
# File lib/active_support/json/decoding.rb, line 35 def with_backend(name) old_backend, self.backend = backend, name yield ensure self.backend = old_backend end
# File lib/active_support/json/decoding.rb, line 58 def convert_dates_from(data) case data when nil nil when DATE_REGEX begin DateTime.parse(data) rescue ArgumentError data end when Array data.map! { |d| convert_dates_from(d) } when Hash data.each do |key, value| data[key] = convert_dates_from(value) end else data end end