module ActiveSupport::JSON
def self.encode(value, options = nil)
def self.encode(value, options = nil) Encoding::Encoder.new(options).encode(value) end
def convert_dates_from(data)
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
def decode(json, options ={})
def decode(json, options ={}) # Can't reliably detect whether MultiJson responds to load, since it's # a reserved word. Use adapter as a proxy for new features. data = if MultiJson.respond_to?(:adapter) MultiJson.load(json, options) else MultiJson.decode(json, options) end if ActiveSupport.parse_json_times convert_dates_from(data) else data end end
def engine
def engine if MultiJson.respond_to?(:adapter) MultiJson.adapter else MultiJson.engine end end
def engine=(name)
def engine=(name) if MultiJson.respond_to?(:use) MultiJson.use name else MultiJson.engine = name end end
def parse_error
def parse_error MultiJson::DecodeError end
def with_backend(name)
def with_backend(name) old_backend, self.backend = backend, name yield ensure self.backend = old_backend end