我想从一个javascript文件中获取一个JavaScript对象,它只包含一个大对象。例如:
var cars = {
mercedes: {
colour: 'silver',
drivemode: 'alldrive'
},
audi: {
size: '4x2x1,5m'
speed: '220 kmph'
}
};
字符串
对于javapart,我使用rhino来获取该对象。现在我编写了以下代码:
Context context = context.enter();
context.setOptimizationLevel(9);
context.setLangaugeVersion(170);
context.getWrapFactory().setJavaPrimitiveWrap(false);
Scriptable defaultScope = context.initSafeStandardObjects();
型
所以现在我应该有可能能够检索JavaScript对象。但如何呢?
Script function = context.compileString("Any javascriptfunction as String", "javaScriptFile.js", 1, null);
function.exec(context, defaultScope);
型
但是,JavaScript函数将该对象作为JSON(类似于汽车.stringify())来获取会是什么样子?更进一步,使用此函数的正确方法是什么?最后,如何以及在何处将对象保存在Java Object中?
我已经检查了这篇文章和this post也this post,但都不符合我的标准或错过了一个代码示例澄清
编辑:我发现了另一种在java中以字符串形式调用/编写JavaScript函数的方法,如:
Scriptable scriptObject;
private String functionAsString = "function getAsJson() {var objectString = { colour: \"silver\", drivemode: \"alldrive\" };return JSON.stringify(objectString);}";
Function fct = context.compileFunction(defaultScope, functionAsString, "AnyName", 1, null);
Object result = fct.call(context, defaultScope, scriptObject, null);
型
唯一仍然存在的问题是如何让“objectString”包含我的汽车.js?
大概是这样的:
String functionAsString2 = "get cars() {return this.cars;}";
型
但是如何/在哪里指定使用此函数的文件?
3条答案
按热度按时间yhxst69z1#
我已经找到了一种方法来检索对象使用脚本引擎从Rhino
字符串
所以对象被检索,可以被访问和转换为Map>,并递归地访问,最后得到JavaScript Object的java Object。不需要使用函数
yx2lnoni2#
在我这边,
allClasses是我的对象classHeader total中的另一个对象是key
allClasses[classHeader]'total']
g52tjvyc3#
这应该工作,根据文档
字符串