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 22 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 21 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 42 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 47 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.transform_values! do |value| convert_dates_from(value) end else data end end