如果通过Java Scripting API嵌入Rhino,则找不到JSON对象

时间:2014-03-12 16:30:00

标签: java json rhino

我可以使用标准的Java Scripting API在我的Java 6.x应用程序中嵌入Rhino1_7R4:

ScriptEngine jsEngine = (new ScriptEngineManager()).getEngineByName("JavaScript");
jsEngine.put("object1", object1);
jsEngine.eval(jsScript);

哪个好看又优雅。但是,我无法从我的js代码中调用JSON.stringify,因为它会抱怨丢失的JSON对象。

使用org.mozilla.javascript.*类后,有一些替代方法可以解决一些旧的文档:

Context jsContext = Context.enter();
Scriptable jsScope= jsContext.initStandardObjects();
jsContext.evaluateString(jsScope, jsScript, "myscript.js", 1, null);

...突然JSON对象就在那里!还有一些其他东西缺失,比如importPackage()函数,所以不要这样:

importPackage(fj.data);

我必须使用别名:

fj = Packages.fj.data;

在我看来,这两种方法都有其缺点。什么是嵌入Rhino并访问其中所有功能的“官方”方式?

1 个答案:

答案 0 :(得分:0)

当我运行相同的代码时

Context jsContext = Context.enter();
Scriptable jsScope= jsContext.initStandardObjects();
jsContext.evaluateString(jsScope, jsScript, "myscript.js", 1, null);

Rhino抱怨没有定义JSON。