Graaljs脚本引擎评估Java脚本字符串条件

问题描述

我正在使用graal.js脚本引擎jdk11。

我们收到两条json字符串消息,一条包含规则/条件(jsRules),另一条包含消息。如果message中的值满足jsRules中的条件,则其值应为1,否则为0。

例如,在下面的代码中,字符串“ message”具有code: CU_USER,因此具有jsRules条件

header.code == 'CU_USER'

应该已经满足,因此下面的eval应该打印为1,但是却给出0。请解释是什么导致了此行为,以及如何获得所需的行为?

public static void process()
{
    int eval =-2 ;
    String jsRules = "{(header.code == 'CU_USER' || header.subcode == 'SD_CODE')?1:0}";
    String message = "{code:'CU_USER'}";
    
    ScriptEngine graalEngine = new ScriptEngineManager().getEngineByName("Graal.js");
    //graalEngine.put("header",message);
    try {
        graalEngine.eval("var header = unescape(" + message + ")");
        eval = (int)graalEngine.eval(jsRules);
        System.out.println("Eval value::  "+eval);
    } catch (ScriptException e) {
        e.printStackTrace();
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)