gpt4 book ai didi

java - 使用 Java 访问 JavaScript 对象属性

转载 作者:行者123 更新时间:2023-11-29 09:05:57 24 4
gpt4 key购买 nike

这是JS代码:

var build_info = new Object;

build_info.BUILD_DISPLAY_VERSION = "Build 201302232300";

Java代码如下:

    ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
jsEngine.eval(buildInfoJS);
buildInfoObj = jsEngine.get("build_info.BUILD_DISPLAY_VERSION");

但是,buildInfoObj 返回为 null。

如果我使用 buildInfoObj = jsEngine.get("build_info"); 我得到一个类 sun.org.mozilla.javascript.internal.NativeObject 的对象,据我所知这是一个受限类。

有没有一种简单的方法可以访问我忽略的 build_info.BUILD_DISPLAY_VERSION 属性?

非常感谢您。

最佳答案

关键是获取 javascript 对象 build_info 而不是 build_info.BUILD_DISPLAY_VERSION 并使用 mozilla 内部的 NativeObject

应打印出以下代码:

BUILD_DISPLAY_VERSION
Build 201302232300

这是源代码(我尽可能地使用 Java 语法,但我正在 Groovy 下测试它)

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.SimpleBindings;
import sun.org.mozilla.javascript.internal.NativeObject;

String buildInfoJS = "var build_info = new Object;build_info.BUILD_DISPLAY_VERSION = 'Build 201302232300'";
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
jsEngine.eval(buildInfoJS);
Object nativeObject = jsEngine.get("build_info");

if (nativeObject instanceof NativeObject) {
NativeObject nObj = (NativeObject)nativeObject;
for (String key: nObj.getAllIds()) {
System.out.println(key);
System.out.println(nObj.get(key, nObj));
}
}

引用:这似乎与以下问题有关,尽管对于 Groovy:How to execute Javascript code from groovy and get the results as a map?

关于java - 使用 Java 访问 JavaScript 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15059716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com