How to convert Java Pojo to Nashorn Json?

心不动则不痛 提交于 2019-12-08 02:43:14

问题


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.


回答1:


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);



回答2:


I faced a similar issue and handled it in a slightly different way.

I wouldn't access the class ScriptObjectMirror directly as it's part of the internal Nashorn's API and therefore prone to change.

You may try something like this:

engine.eval("var inputModel = " + inputModel + ";");    
Object json = engine.get("inputModel");



回答3:


you could use inbuild JSON feature in Nashorn as mentioned in

Nashorn JSON stringify



来源:https://stackoverflow.com/questions/41279892/how-to-convert-java-pojo-to-nashorn-json

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!