Java Scripting API – JavaScript对象的属性始终为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.nameevaluating为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"));
点赞