2

重複の可能性:
JSON文字列をJavaのオブジェクトに変換しますか?

私はJavaで書かれたビデオゲームのスクリプトの実装に取り​​組んでいます。

次のようなjavascriptオブジェクトを定義できることに興味があります。

var obj = ({
    x: 1,
    a: "meh",
    onEvent: function(info) {
       //do stuff
    }
});

そしてそれを決定されたパイプラインを通してジャワの土地に渡します。現在、Javaでは、オブジェクトをsun.org.mozilla.javasript.internal.NativeObjectとして受け取っていますが、これはあまり使い勝手がよくありません。javascriptをJavaオブジェクトに転送して、その中のデータにアクセスできる方法はありますか?具体的には、GWTを使用せずに、私は実際にはWebテクノロジーを使用していません。

明確にするために編集:Javascriptコードの文字列をJSONのJava関数に渡していない。スクリプト全体を評価するためにjavax.scriptパッケージを使用しています。スクリプトエンジン内には、javascriptオブジェクトをパラメーターとして渡したいメソッドを使用したJavaオブジェクトへのバインディングがあります。

前もって感謝します!

4

1 に答える 1

2

あまり作業をしていませんが、TFMの例はそれほど難しくないようです。すでに何を試みたかはわかりませんが、いずれにせよ:

public static void main(String[] args) throws Exception {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");

    // JavaScript code in a String. This code defines a script object 'obj'
    // with one method called 'hello'.        
    String script = "var obj = new Object(); obj.hello = function(name) { print('Hello, ' + name); }";
    // evaluate script
    engine.eval(script);

    // javax.script.Invocable is an optional interface.
    // Check whether your script engine implements or not!
    // Note that the JavaScript engine implements Invocable interface.
    Invocable inv = (Invocable) engine;

    // get script object on which we want to call the method
    Object obj = engine.get("obj");    // <---- THIS IS A JAVA.LANG.OBJECT

    // invoke the method named "hello" on the script object "obj"
    inv.invokeMethod(obj, "hello", "Script Method !!" );
}
于 2012-05-25T17:19:32.467 に答える