On 10/12/13 17:15, Tim Fox wrote:
On 10/12/13 16:52, André Bargull wrote:
Thanks, I adapted the code to use ScriptUtils.wrap() and encountered a
strange situation where JSON.stringify returns undefined for a valid JS
object. Maybe another scope problem?

Here is a reproducer:https://gist.github.com/purplefox/7893408

No, it's not a scope problem. JSON.stringify isn't able to process ScriptObjectMirror objects, see ll. 263-270 in NativeJSON.java [1].

- André

[1] http://hg.openjdk.java.net/nashorn/jdk8/nashorn/file/tip/src/jdk/nashorn/internal/objects/NativeJSON.java

I see, so when a JS method in one scope is invoked from another scope all the arguments get automatically wrapped in a ScriptObjectMirror. I suppose NativeJSON needs to check for ScriptObjectMirror and unwrap internally before attempting to stringify (?)

I wonder if anyone could suggest a workaround for now? (it's not obvious to me)


I've managed to work around this for now by not using the JSON impl in Nashorn but hacking Crockford's pure JS version <https://github.com/douglascrockford/JSON-js>https://github.com/douglascrockford/JSON-js and using that.
<https://github.com/douglascrockford/JSON-js>

Reply via email to