提交 af9caae9 编写于 作者: J Jeremy Kemper

Merge pull request #12201 from chancancode/json_load

Replace JSON.load with JSON.parse
......@@ -13,8 +13,8 @@ class << self
#
# ActiveSupport::JSON.decode("{\"team\":\"rails\",\"players\":\"36\"}")
# => {"team" => "rails", "players" => "36"}
def decode(json, proc = nil, options = {})
data = ::JSON.load(json, proc, options)
def decode(json, options = {})
data = ::JSON.parse(json, options.merge(create_additions: false))
if ActiveSupport.parse_json_times
convert_dates_from(data)
else
......
......@@ -4,6 +4,12 @@
require 'active_support/time'
class TestJSONDecoding < ActiveSupport::TestCase
class Foo
def self.json_create(object)
"Foo"
end
end
TESTS = {
%q({"returnTo":{"\/categories":"\/"}}) => {"returnTo" => {"/categories" => "/"}},
%q({"return\\"To\\":":{"\/categories":"\/"}}) => {"return\"To\":" => {"/categories" => "/"}},
......@@ -52,7 +58,8 @@ class TestJSONDecoding < ActiveSupport::TestCase
# tests escaping of "\n" char with Yaml backend
%q({"a":"\n"}) => {"a"=>"\n"},
%q({"a":"\u000a"}) => {"a"=>"\n"},
%q({"a":"Line1\u000aLine2"}) => {"a"=>"Line1\nLine2"}
%q({"a":"Line1\u000aLine2"}) => {"a"=>"Line1\nLine2"},
%q({"json_class":"TestJSONDecoding::Foo"}) => {"json_class"=>"TestJSONDecoding::Foo"}
}
TESTS.each_with_index do |(json, expected), index|
......@@ -78,5 +85,11 @@ class TestJSONDecoding < ActiveSupport::TestCase
def test_failed_json_decoding
assert_raise(ActiveSupport::JSON.parse_error) { ActiveSupport::JSON.decode(%({: 1})) }
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)
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册