如何转换 Java Pojo 成 Nashorn Json?

How to convert Java Pojo to Nashorn Json?

我有一个 Java 对象,我想将其转换为 json 对象并传递给 Nashorn javascript 引擎。要google回答这个问题出奇地困难!谁能告诉我怎么做?

我试过这个:

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

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

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

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

您可以使用 Nashorn 中的内置 JSON 功能,如

中所述

Nashorn JSON stringify

您可以通过

从引擎转换 json
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
ScriptObjectMirror json = (ScriptObjectMirror) engine.eval("("+inputModelAsString+")");

然后你可以在代码中传递json对象

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

我遇到过类似的问题,但处理方式略有不同。

我不会直接访问 class ScriptObjectMirror,因为它是内部 Nashorn 的 API 的一部分,因此容易发生变化。

您可以这样尝试:

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