这与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更多功能的不同脚本语言。为此,我必须定义自己的接口并围绕每个不同的脚本引擎实现这些。

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

我建议解决此问题的最佳方法是让您的脚本引擎包装器提供getValue(String name)并修复将其转换为Java List的javascript数组。自然,setValue(String,Object)将检查该值是否为List并将其转换回js数组,依此类推。它乏味的:()

08-16 04:36