module ActiveSupport::JSON
Constants
- DATETIME_REGEX
- DATE_REGEX
matches YAML-formatted dates
Public Class Methods
decode(json)
click to toggle source
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 20 def decode(json) data = ::JSON.parse(json, quirks_mode: true) if ActiveSupport.parse_json_times convert_dates_from(data) else data end end
encode(value, options = nil)
click to toggle source
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 19 def self.encode(value, options = nil) Encoding.json_encoder.new(options).encode(value) end
parse_error()
click to toggle source
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 40 def parse_error ::JSON::ParserError end
Private Class Methods
convert_dates_from(data)
click to toggle source
# File lib/active_support/json/decoding.rb, line 46 def convert_dates_from(data) case data when nil nil when DATE_REGEX begin Date.parse(data) rescue ArgumentError data end when DATETIME_REGEX begin Time.zone.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