Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将JavaPOJO转换为Nashorn Json?_Java_Json_Java 8_Pojo_Nashorn - Fatal编程技术网

如何将JavaPOJO转换为Nashorn Json?

如何将JavaPOJO转换为Nashorn Json?,java,json,java-8,pojo,nashorn,Java,Json,Java 8,Pojo,Nashorn,我有一个Java对象,我想将其转换为json对象并传递给Nashorn javascript引擎。用谷歌搜索这个问题的答案是非常困难的!有人能告诉我怎么做吗 我试过这个: ObjectMapper mapper = new ObjectMapper(); String inputModelAsString = mapper.writeValueAsString(inputModel); 然后将字符串json传递给函数: result = invocable.invokeFunction(PRO

我有一个Java对象,我想将其转换为json对象并传递给Nashorn javascript引擎。用谷歌搜索这个问题的答案是非常困难的!有人能告诉我怎么做吗

我试过这个:

ObjectMapper mapper = new ObjectMapper();
String inputModelAsString = mapper.writeValueAsString(inputModel);
然后将字符串json传递给函数:

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

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

您可以在Nashorn中使用内置json功能,如中所述


您可以通过

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
ScriptObjectMirror json = (ScriptObjectMirror) engine.eval("("+inputModelAsString+")");
然后可以在代码中传递json对象

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

我面临着一个类似的问题,并以稍微不同的方式处理它

我不会直接访问ScriptObjectMirror类,因为它是内部Nashorn API的一部分,因此易于更改

您可以尝试以下方法:

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

您可以使用JSON解析javascript代码中的字符串。parse尝试过它,但ScriptObjectMirror jsonInputModel=(ScriptObjectMirror)engine.eval(“{\'测试\':1}”);导致脚本异常。它期待一个“;”“:”在哪里。好主意,但是,我如何让它工作呢?出于某种原因,您需要在表达式周围放上括号,如:engine.eval(“(“+inputModelAsString+”),然后它就工作了。