ScriptEngine, wie man einen String übergibt, der JSON repräsentiert?

Ich habe versucht, mithilfe von ScriptEngine in jdk 1.6 ein String-Objekt zu übergeben, das einen JSON-String von Java nach Javascript darstellt.

Mein Code funktioniert in JSFIDDLEhttp://jsfiddle.net/hn4yk/13/ aber wenn ich versuche, es mit der ScriptEngine zu laden, funktioniert es nicht und löst eine Ausnahme aus

Ich habe getestet, dass die Variable korrekt übergeben wird, aber die Methode eval oder JSON.parse funktioniert nicht! Ich habe versucht, die Bibliothek für JSON.parse und meine Funktion in derselben Datei abzulegen!

Dies ist mein Java-Code:

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
    }
}

Jede Hilfe wird geschätzt! Vielen Dank!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage