如何将Java Pojo转换为Nashorn Json?

时间:2016-12-22 09:34:07

标签: java json java-8 pojo nashorn

我有一个Java对象,我想将其转换为json对象并传递给Nashorn javascript引擎。谷歌答案是非常困难的!有人可以告诉我该怎么做吗?

我试过了:

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

然后将字符串json传递给函数:

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

但它是作为字符串传递的,而不是作为json传递的。

3 个答案:

答案 0 :(得分:4)

您可以通过

转换引擎中的json
ScriptEngine 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功能,如

中所述

Nashorn JSON stringify