Module: ActiveSupport::JSON
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Defined in: | activesupport/lib/active_support/json/decoding.rb, activesupport/lib/active_support/json/encoding.rb |
Constant Summary
-
DATETIME_REGEX =
# File 'activesupport/lib/active_support/json/decoding.rb', line 14/\A(?:\d{4}-\d{2}-\d{2}|\d{4}-\d{1,2}-\d{1,2}[T \t]+\d{1,2}:\d{2}:\d{2}(\.[0-9]*)?(([ \t]*)Z|[-+]\d{2}?(:\d{2})?)?)\z/
-
DATE_REGEX =
matches YAML-formatted dates
/\A\d{4}-\d{2}-\d{2}\z/
Class Method Summary
-
.decode(json)
(also: .load)
Parses a
JSON
string (JavaScript::Object
Notation) into a hash. -
.dump(value, options = nil)
Alias for .encode.
- .encode(value, options = nil) (also: .dump)
-
.load(json)
Alias for .decode.
-
.parse_error
Returns the class of the error that will be raised when there is an error in decoding
JSON
. - .convert_dates_from(data) private
Class Method Details
.convert_dates_from(data) (private)
[ GitHub ]# File 'activesupport/lib/active_support/json/decoding.rb', line 48
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
.decode(json) Also known as: .load
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 'activesupport/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
.dump(value, options = nil)
Alias for .encode.
# File 'activesupport/lib/active_support/json/encoding.rb', line 25
alias_method :dump, :encode
.encode(value, options = nil) Also known as: .dump
[ GitHub ]# File 'activesupport/lib/active_support/json/encoding.rb', line 22
def encode(value, = nil) Encoding.json_encoder.new( ).encode(value) end
.load(json)
Alias for .decode.
# File 'activesupport/lib/active_support/json/decoding.rb', line 31
alias_method :load, :decode
.parse_error
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 'activesupport/lib/active_support/json/decoding.rb', line 43
def parse_error ::JSON::ParserError end