Я пытался передать объект String, представляющий строку JSON из java в javascript, используя ScriptEngine в jdk 1.6.ScriptEngine, как передать строку, представляющую JSON?
Мой код работает в JSFIDDLE http://jsfiddle.net/hn4yk/13/, но когда я пытаюсь загрузить его с ScriptEngine он не работает и выдает sun.org.mozilla.javascript.internal.EcmaError исключение: TypeError: Не удается прочитать свойство «resultList» из undefined (# 1164)
Я тестировал, что переменная передается правильно, но метод eval или JSON.parse не работает! Я попытался поместить библиотеку для JSON.parse и моей функции в тот же файл!
Это мой Java-код:
public class InvokeScriptMethod {
public static void main(String[] args) throws Exception {
InputStream stream = new FileInputStream("C:/Subclipse/TestJavascriptServerSide/jsonInput.txt");
StringWriter writer = new StringWriter();
IOUtils.copy(stream, writer, "UTF-8");
String jsonString = writer.toString();
InputStream javascriptStream = new FileInputStream("C:/Subclipse/TestJavascriptServerSide/Script");
StringWriter writerScript = new StringWriter();
IOUtils.copy(javascriptStream, writerScript, "UTF-8");
String javascriptString = writerScript.toString();
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByExtension("js");
engine.eval(javascriptString);
Invocable inv = (Invocable) engine;
String convertedJson = (String)inv.invokeFunction("convertJSON",jsonString);
System.out.println("results"+convertedJson);
// now should I convert it to a writer to reply in a webapplication as response.getWriter().print(convertedJson);
// and I would like to don't lose the JSON formatting to see data with indentation
}
}
Любая помощь приветствуется! Спасибо!