Search code examples
javajsonjava-8pojonashorn

How to convert Java Pojo to Nashorn Json?


I have a Java object that I want to turn into a json object and pass to the Nashorn javascript engine. It is surprisingly difficult to google an answer for this! Can someone tell me how to do it?

I tried this:

ObjectMapper mapper = new ObjectMapper();
String inputModelAsString = mapper.writeValueAsString(inputModel);

And then passing the string json to the function:

result = invocable.invokeFunction(PROGRAM_FUNCTION, moduleName, inputModelAsString);

But it was passed as a string, not as a json.


Solution

  • You can convert json from engine by

    ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
    ScriptObjectMirror json = (ScriptObjectMirror) engine.eval("("+inputModelAsString+")");
    

    Then you can pass the json object in you code

    result = invocable.invokeFunction(PROGRAM_FUNCTION, moduleName, json);