module ActiveSupport::JSON
Constants
- DATETIME_REGEX
- DATE_REGEX
-
matches YAML-formatted dates
Public Class Methods
Source
# 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
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"}
Source
# File lib/active_support/json/encoding.rb, line 21 def self.encode(value, options = nil) Encoding.json_encoder.new(options).encode(value) 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\"}"
Source
# File lib/active_support/json/decoding.rb, line 42 def parse_error ::JSON::ParserError 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
Private Class Methods
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