diff options
author | Florian Frank <flori@ping.de> | 2016-02-25 10:27:44 +0100 |
---|---|---|
committer | Florian Frank <flori@ping.de> | 2016-02-25 10:27:44 +0100 |
commit | 8883a51ec7a56cd8bda87ab2c82924a90d7aa782 (patch) | |
tree | e4804afa8c639993f5ef4e872e201cad3a843c44 /java/src/json/ext/Generator.java | |
parent | bf8ef07bf3cf0fe7126b029b888e4054116c7c09 (diff) | |
parent | 4922d2ae6cf93d14f7d51d416f518b5945935b3a (diff) | |
download | json-8883a51ec7a56cd8bda87ab2c82924a90d7aa782.tar.gz |
Merge branch 'v1.8'
Diffstat (limited to 'java/src/json/ext/Generator.java')
-rw-r--r-- | java/src/json/ext/Generator.java | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/java/src/json/ext/Generator.java b/java/src/json/ext/Generator.java index ecceb27..bb3a394 100644 --- a/java/src/json/ext/Generator.java +++ b/java/src/json/ext/Generator.java @@ -1,8 +1,7 @@ /* * This code is copyrighted work by Daniel Luz <dev at mernen dot com>. * - * Distributed under the Ruby and GPLv2 licenses; see COPYING and GPL files - * for details. + * Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt */ package json.ext; @@ -428,11 +427,14 @@ public final class Generator { new Handler<IRubyObject>() { @Override RubyString generateNew(Session session, IRubyObject object) { - IRubyObject result = - object.callMethod(session.getContext(), "to_json", - new IRubyObject[] {session.getState()}); - if (result instanceof RubyString) return (RubyString)result; - throw session.getRuntime().newTypeError("to_json must return a String"); + if (object.respondsTo("to_json")) { + IRubyObject result = object.callMethod(session.getContext(), "to_json", + new IRubyObject[] {session.getState()}); + if (result instanceof RubyString) return (RubyString)result; + throw session.getRuntime().newTypeError("to_json must return a String"); + } else { + return OBJECT_HANDLER.generateNew(session, object); + } } @Override |