java - Rhino 和 Java 通过 JSR223 进行互操作 : working with Javascript Object instances

标签 java rhino jsr223

这与 this other SO question about arrays 非常相似.

如果我评估:

y = {a: 1, b: 2, "momomomo": function() { return "hi"; }, zz: "wham"}

在通过 JSR223 (ScriptingEngine) 实例化的 Javascript 脚本中,我得到 NativeObject某种类型的(我在 Eclipse 的调试器中看到这一点)并且不知道如何访问其属性。此外,我什至不知道哪个 .jar 文件(如果有)需要添加到我的构建路径中才能使用相关类,并且如果我找到一种适用于 Rhino Javascript 的方法,那么它对于Jython。

似乎 JSR223 应该包含对 ScriptingEngine 的与语言无关的访问方法,以提供将返回的对象包装为 List<Object> 的能力。对于数组或 Map<String, Object>对于关联数组。

有什么建议吗?

最佳答案

我也尝试嵌入具有比 jsr223 或 bsf 更多功能的不同脚本语言。为此,我必须定义自己的接口(interface)并围绕每个不同的脚本引擎实现这些接口(interface)。

我想要的一个功能是能够将函数(具有单个方法的 java 接口(interface))传递给我的脚本引擎,并让它在传递参数时正常工作。我的每个嵌入式脚本引擎都有一个层,我可以在其中从脚本环境中包装/解开 java 值。

我建议解决问题的最佳方法是让脚本引擎的包装器提供 getValue( String name ) 并让它修复 javascript 数组,将它们转换为 java 列表。当然,setValue(String, Object) 会检查该值是否是一个 List 并将其转换回 js 数组等等。很乏味:()

关于java - Rhino 和 Java 通过 JSR223 进行互操作 : working with Javascript Object instances,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5599197/

相关文章:

Java 6 ScriptEngine 和 JSON.parse 问题

java - JDK8 中使用的 Rhino javascript JSR-223-wrapper 在哪里?

java - 如何将使用 'this' 的语句声明为静态?

java - 如何构建最新的 AOSP?

javascript - anchor 元素的路径名在 Rhino 中使用 env.js 返回未定义

javascript - 使用 Rhino 和 JSR-223 读取 JSON 文件

java - 用户输入的公式解析(eval)

jmeter - 如何在 jmeter 中使用 jsr 223 预处理器?

Java 线程 : Is it possible view/pause/kill a particular thread from a different java program running on the same JVM?

c# - .NET 相当于 Java 的 BufferedReader