我有以下程序,它在 Java (nashorn) 中执行 Javascript。 Javascript 代码正在返回一个对象。
public Object execute(){
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine e = sem.getEngineByName("nashorn");
Invocable invocable = (Invocable)e;
ScriptEngineFactory f = e.getFactory();
Object result;
try {
String statement = "function fetch(value, count) { count++ ; return {'value': value,'count' : count} }; } ; ";
CompiledScript cs = ((Compilable)e).compile(statement);
cs.eval();
result = invocable.invokeFunction("fetch", 10,2);
}
catch (Exception se ) {
String version = System.getProperty("java.version");
System.out.println(version);
result = "script exception ";
}
如何在 Java 中访问结果对象中的对象值?
最初,我尝试使用 result.toString()
来获取结果。似乎 返回 [Object Object]
有没有一种方法,我可以将结果返回到 result
对象,这样我可以获得等同于 result.value
和 result.count 的值
(类似于 Javascript)。
最佳答案
如果你的程序的返回值是一个 JavaScript 对象,你应该能够在 Java 中将它转换为 jdk.nashorn.api.scripting.JSObject
然后使用它的方法(例如 getMember()
) 来查询和操作它。
关于java - 如何取消装箱 javascript (nashorn) 在 Java 对象中返回的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23089938/