Javascript关联数组到Java对象

Nashorn/Javascript associative array to Java object?

本文关键字:Java 对象 数组 关联 Javascript      更新时间:2023-09-26

我正在尝试将Wicket项目中的JavaScript集成到我的TestNG测试套件中。我决定给纳什霍恩项目一个尝试。

现在我想解析来自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或类似的库,但是有一个更原生的方法来解决这个映射问题?

多亏了上面的评论,我找到了一个相对不错的解决方案,使用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;
}