提交 9e4efed6 编写于 作者: J Jeremy Kemper

Merge pull request #12214 from chancancode/json_decode_does_not_take_options

Raise an error when AS::JSON.decode is called with options
* Calling ActiveSupport::JSON.decode with unsupported options now raises an error.
*Godfrey Chan*
* Support :unless_exist in FileStore
*Michael Grosser*
......
......@@ -14,7 +14,14 @@ class << self
# ActiveSupport::JSON.decode("{\"team\":\"rails\",\"players\":\"36\"}")
# => {"team" => "rails", "players" => "36"}
def decode(json, options = {})
data = ::JSON.parse(json, options.merge(create_additions: false, quirks_mode: true))
if options.present?
raise ArgumentError, "In Rails 4.1, ActiveSupport::JSON.decode no longer " \
"accepts an options hash for MultiJSON. MultiJSON reached its end of life " \
"and has been removed."
end
data = ::JSON.parse(json, quirks_mode: true)
if ActiveSupport.parse_json_times
convert_dates_from(data)
else
......
......@@ -98,10 +98,8 @@ def test_failed_json_decoding
assert_raise(ActiveSupport::JSON.parse_error) { ActiveSupport::JSON.decode(%()) }
end
def test_cannot_force_json_unmarshalling
encodeded = %q({"json_class":"TestJSONDecoding::Foo"})
decodeded = {"json_class"=>"TestJSONDecoding::Foo"}
assert_equal decodeded, ActiveSupport::JSON.decode(encodeded, create_additions: true)
def test_cannot_pass_unsupported_options
assert_raise(ArgumentError) { ActiveSupport::JSON.decode("", create_additions: true) }
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册