Nashorn / Javascript关联数组到Java对象?

时间:2015-07-13 07:12:43

标签: javascript java json nashorn

我尝试将我的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或类似的库解析它,但是这种映射问题有更原生的方法吗?

1 个答案:

答案 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;
}
相关问题