2014-03-12 13 views
0

我可以在這樣我的Java 6.x的應用程序中嵌入Rhino1_7R4,使用標準的Java腳本API嵌入犀牛:JSON對象,如果通過Java腳本API

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並訪問其中所有功能的「官方」方式?

+0

犀牛1.7 [器具(https://developer.mozilla.org/en-US/docs/New_in_Rhino_1.7R4)的JavaScript [1.7如由Mozilla定義](https://developer.mozilla.org/en-美國/文檔/網絡/的JavaScript /參考)。直到JavaScript 1.8才加入JSON。 – McDowell

回答

0

當我運行相同的代碼

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

犀牛抱怨說,JSON沒有定義。