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
}
}
:
이 내 자바 코드입니다! 고맙습니다!