2013-07-09 3 views
0

Я пытался передать объект 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 
    } 
} 

Любая помощь приветствуется! Спасибо!

ответ

0

Проблема была в файле jsonInput, который мне пришлось поместить все Json Stream в одну строку, и это работает!

Смежные вопросы