Java 脚本 API -- 来自 JavaScript 对象的 属性 始终为 null

Java Scripting API -- Property from JavaScript object is always null

下面是我 运行 在我的 Java 编译器中的代码:

ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");

engine.put("person", "{name: 'Bob', favoriteColor: 'red'}");
System.out.println(engine.get("person.name"));

我希望它的计算结果为 "Bob",但它却给了我 null。如果我尝试只打印用户对象,它会正确地给我这个输出:

{name: 'Bob', favoriteColor: 'red'}

为什么 person.name 评估为 null?如有任何帮助,我们将不胜感激!

显然,put 方法不会评估传递的值,而是假设它是一个文字。例如 script.put("test", 5) 会将文字整数值 5 放入名为 test.

的变量中

第二个错误是 get 也没有计算它的参数,而是假定它也是变量的字面名称。

但是,您可以完成您想要完成的事情。试试这个:

engine.eval ("var person = {name: 'Bob', favoriteColor: 'red'}");
System.out.println(((Bindings) engine.get("person")).get ("name"));