Я хочу получить объект 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 (что-то вроде cars.stringify ())? И еще больше, это правильный подход в использовании этой функции? И, наконец, как и где мне сохранить объект в java объекте?
Я уже проверил этот пост и этот пост также этот пост но все они не соответствуют моим критериям или отсутствуют в примере кода для пояснения
Редактировать: я нашел другой подход при вызове / написании функции javascript в java в виде строки, подобной:
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;}";
Но как / и где мне указать файл, в котором будет использоваться эта функция?