2010-11-10 80 views
2

我正在使用Rhino在Java和JavaScript之間進行通信。 我通過Rhino調用一個JavaScript函數,這個函數接受一個必須是JSON對象的參數。如何解析Java對象到JSON並將其傳遞給JavaScript在我的情況? 的Java代碼:Java對象到JSON

try {  
    engine.eval(fileReader); 
    Invocable invocableEngine = (Invocable) engine; 
    Object o = invocableEngine.invokeFunction("f", MyObject json); 
    System.out.println(o); 
} catch (ScriptException ex) { 
    ex.printStackTrace(); 
} catch(Exception e){ 
    e.printStackTrace(); 
} 

的JavaScript代碼:

function f(json){ 
    var id = json.id; 
    return id; 
} 

回答

4

我沒有用犀牛,但對於Java對象的轉換/收藏到JSON我使用谷歌圖書館gson

2

當我使用Rhino時,我剛剛將Java-JSON-Object(org.json.JSONObject)轉換爲String,並將它們作爲函數參數傳遞給存在於rhino範圍內的javascript函數。

String itemDatagram = jsonItemDatagram.toString; 
String code = "inside.js.scope.aFunction(" + itemDatagram + ");"; 

然後代碼字符串對象必須由Rhino評估。 String對象自動成爲js範圍內的一個Javascript對象(在Rhino方面)。由於JSON只是javascript對象的一個​​子集,所以這應該是你想要的。

+0

您好!你能讓我們看看這個:http://stackoverflow.com/questions/17548552/scriptengine-how-to-pass-a-string-that-represent-json?你能告訴我你的方法是如何工作的嗎? – 2013-07-09 13:03:22