Java脚本API——JavaScript对象的属性始终为null

Java脚本API——JavaScript对象的属性始终为null,javascript,java,scriptengine,Javascript,Java,Scriptengine,下面是我在Java编译器中运行的代码: ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("JavaScript"); engine.put("person", "{name: 'Bob', favoriteColor: 'red'}"); System.out.println(engine.get("person.name")); 我希

下面是我在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"));

“用户”在该代码中的定义在哪里?您已经
放置了一个名为
person
的变量,然后您正试图从
用户
获取值。试着改用
person.name
。这是怎么得到这么多选票的?哎呀,对不起!只是复制中的一个错误,我已经更改了它。应该是“person.name”那么多==1?但是是的,看起来可能是打字/语法错误。