summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Frank <flori@ping.de>2013-05-10 17:37:02 +0200
committerFlorian Frank <flori@ping.de>2013-05-13 10:53:25 +0200
commit07950f1ab2b1ad2c35cf0a8366f63dd9f2a6f730 (patch)
tree0a521f1907c9e546c9845f3afb43ff6a416ec5dd
parentdb07e64558ed8920686625ede9ab13fd777afe51 (diff)
downloadjson-07950f1ab2b1ad2c35cf0a8366f63dd9f2a6f730.tar.gz
resolved
-rw-r--r--lib/json/generic_object.rb9
-rw-r--r--tests/test_json_generic_object.rb10
2 files changed, 19 insertions, 0 deletions
diff --git a/lib/json/generic_object.rb b/lib/json/generic_object.rb
index 8b1074c..8b8fd53 100644
--- a/lib/json/generic_object.rb
+++ b/lib/json/generic_object.rb
@@ -31,6 +31,15 @@ module JSON
object
end
end
+
+ def load(source, proc = nil, opts = {})
+ result = ::JSON.load(source, proc, opts.merge(:object_class => self))
+ result.nil? ? new : result
+ end
+
+ def dump(obj, *args)
+ ::JSON.dump(obj, *args)
+ end
end
self.json_creatable = false
diff --git a/tests/test_json_generic_object.rb b/tests/test_json_generic_object.rb
index 77ef22e..b96b735 100644
--- a/tests/test_json_generic_object.rb
+++ b/tests/test_json_generic_object.rb
@@ -49,6 +49,16 @@ class TestJSONGenericObject < Test::Unit::TestCase
assert_equal true, GenericObject.from_hash(true)
end
+ def test_json_generic_object_load
+ empty = JSON::GenericObject.load(nil)
+ assert_kind_of JSON::GenericObject, empty
+ simple = JSON::GenericObject.load('{ "hello": "world" }')
+ assert_kind_of JSON::GenericObject, simple
+ assert_equal "world", simple.hello
+ json = JSON::GenericObject.dump(JSON::GenericObject[:hello => 'world'])
+ assert_equal json, '{ "hello": "world" }'
+ end
+
private
def switch_json_creatable