我有一个Java对象,我想将其转换为json对象并传递给Nashorn javascript引擎。谷歌答案是非常困难的!有人可以告诉我该怎么做吗?
我试过了:
ObjectMapper mapper = new ObjectMapper();
String inputModelAsString = mapper.writeValueAsString(inputModel);
然后将字符串json传递给函数:
result = invocable.invokeFunction(PROGRAM_FUNCTION, moduleName, inputModelAsString);
但它是作为字符串传递的,而不是作为json传递的。
答案 0 :(得分:4)
您可以通过
转换引擎中的jsonScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
ScriptObjectMirror json = (ScriptObjectMirror) engine.eval("("+inputModelAsString+")");
然后你可以在代码中传递json对象
result = invocable.invokeFunction(PROGRAM_FUNCTION, moduleName, json);
答案 1 :(得分:0)
我遇到了类似的问题并以稍微不同的方式处理它。
我不会直接访问ScriptObjectMirror类,因为它是内部Nashorn API的一部分,因此容易发生变化。
您可以尝试这样的事情:
engine.eval("var inputModel = " + inputModel + ";");
Object json = engine.get("inputModel");
答案 2 :(得分:-2)
你可以在Nashorn中使用inbuild JSON功能,如
中所述