从java操作Javascript对象
Manipulate Javascript objects from java
我已经完成了一个从Java操作JavaScript对象的程序
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 object = jsEngine.get("build_info");
System.out.println(object.getClass().getName());
if (object instanceof NativeObject ) {
NativeObject nObj = (NativeObject)object
for (Object key: nObj.getAllIds()) {
System.out.println(key);
}
}
现在的对象是instanceof sun.org.mozilla.javascript.internal.NativeObject
,但我不能直接使用这些
有办法解决这个问题吗?
为什么不直接使用JSON和Java JSON API?或者,您也可以使用GWT (Google Web Toolkit)。
考虑通过脚本引擎对Java类型进行强制转换。
例如,以下代码将属性名称强制转换为本地Java:
public static void main(String[] a) throws ScriptException {
ScriptEngine engine = new ScriptEngineManager()
.getEngineByName("JavaScript");
Object o = engine.eval("(function(){return {foo:'Hello', bar:100};}());");
engine.put("toInspect", o);
engine.put("visitor", new PropertyNameVisitor());
engine.eval("(function(obj){" +
" var arr, prop;" +
" arr = [];" +
" for(prop in obj) {" +
" if(obj.hasOwnProperty(prop)) {" +
" visitor.visit(prop);" +
" }" +
" }" +
" return arr;" +
"}(toInspect));");
}
public static class PropertyNameVisitor {
public void visit(String name) {
System.out.println(name);
}
}
相关文章:
- 面向对象JavaScript中的私有函数
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 将字符串转换为对象 javascript/jquery
- 正在检查对象javascript中是否存在嵌套属性
- 时间-日期对象JavaScript getUTCMilliseconds
- 仅在对象(javascript)中解析值
- 使用对象(JavaScript或jQuery)填充选择下拉列表
- 引用另一个对象javascript中的对象
- 如何删除列表中的对象?Javascript nodejs和下划线
- 无法从日期对象javascript获取日期和月份
- 如何在if语句中使用对象-Javascript
- 对象javascript错误
- 对象Javascript的少数实例
- 位置对象Javascript
- 将字符串传递到对象javascript中
- 获取对象Javascript或jQuery的最后一个值
- 鼠标接近对象Javascript
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- 访问对象javascript数组中的对象属性值