我尝试将我的Wicket项目中的JavaScript
集成到我的TestNG
测试套件中。我决定尝试Nashorn项目。
现在我要解析nashorn的结果。我从javascript返回一个关联数组,并获得一个ScriptObjectMirror
作为返回类型。
ScriptEngine engine = factory.getEngineByName( "nashorn" );
String content = new String( Files.readAllBytes( Paths.get( "my-funcs.js" ) ) );
Object result = engine.eval( content + ";" + script );
当然,我可以JSON.stringify
数组,使用更多的javascript脚本,并使用Gson
或类似的库解析它,但是这种映射问题有更原生的方法吗?
答案 0 :(得分:0)
感谢上述评论,我找到了一个相对不错的解决方案,使用Apache Commons BeanUtils
public static class MyResult
{
private String prop1;
public void setProp1(String s)
{
...
}
}
...
public MyResult getResult(String script)
{
//ugly-but-fast-to-code unchecked cast
ScriptObjectMirror som = (ScriptObjectMirror) engine.eval(script);
MyResult myResult = new MyResult();
BeanUtils.populate(myResult, som);
return myResult;
}