从Java访问Rhino的原生JSON.Stringify

iro*_*hon 7 rhino

有没有更简洁的方法来获取Javascript对象的JSON表示而不是以下kludge?

System.out.println(((ScriptableObject) scope).callMethod(
    cx, (Scriptable) scope.get("JSON", scope), 
    "stringify", new Object[]{jsObject}));
Run Code Online (Sandbox Code Playgroud)

其中jsObject是我想要字符串化的ScriptableObject.

Tim*_*aub 12

请注意,Hannes 现在已经在Rhino中解决了这个问题.所以用法简化了这个:

import org.mozilla.javascript.NativeJSON;
// ...

Object json = NativeJSON.stringify(cx, scope, jsObject, null, null);
Run Code Online (Sandbox Code Playgroud)

org.mozilla.javascript.NativeJSON类应该在Rhino 1.7R4版本中公开.

  • 我想使用以上内容,但无法弄清楚如何从Ant / Rhino / Script标签中获取范围。上下文似乎可以通过.getCurrentContext()访问,但不能确定范围。 (2认同)