2013-07-09 1 views
0

jdk 1.6에서 ScriptEngine을 사용하여 자바에서 JSON 문자열을 나타내는 String 객체를 전달하려고했습니다.ScriptEngine JSON을 나타내는 String을 전달하는 방법은 무엇입니까?

내 코드는 JSFIDDLE http://jsfiddle.net/hn4yk/13/에서 작동하지만 ScriptEngine으로로드하려고하면 작동하지 않고 예외를 throw합니다. sun.org.mozilla.javascript.internal.EcmaError : TypeError : "resultList"속성을 읽을 수 없습니다. undefined (# 1164)

변수가 올바르게 전달되었지만 eval 또는 JSON.parse 메서드가 작동하지 않는다는 것을 테스트했습니다. 나는 JSON.parse 라이브러리와 같은 파일에 내 함수를 넣으려고했다! 어떤 도움에 감사드립니다

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을 한 줄에 넣어야합니다!

관련 문제