You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JexlEngine时,如何在JexlExpression中访问Map元素?

JEXL中直接将整个Map放入上下文并通过属性式访问的方法

当然可以直接把整个Map放入JexlContext,完全不需要手动将Map的每个元素单独添加到上下文里。

JEXL本身支持通过map.key这种类似对象属性的语法来访问Map中的元素,底层会自动调用Map的get("key")方法来获取对应的值。

举个简单的示例代码:

// 初始化JexlEngine
JexlEngine jexl = new JexlBuilder().create();
// 准备要遍历的List<Map<String, Object>>
List<Map<String, Object>> dataList = ...;

for (Map<String, Object> itemMap : dataList) {
    // 创建上下文并将整个Map放入,命名为"item"
    JexlContext context = new MapContext();
    context.set("item", itemMap);
    
    // 编写表达式,通过item.key访问Map中的元素
    String exprStr = "item.name == '张三' && item.age > 18";
    JexlExpression expr = jexl.createExpression(exprStr);
    
    // 计算表达式结果
    Boolean result = (Boolean) expr.evaluate(context);
    // 处理结果...
}

这种写法完全可行,而且是JEXL的标准特性——当你访问一个对象的属性时,如果该对象是Map,JEXL会优先尝试用属性名作为key调用Map的get方法。

内容的提问来源于stack exchange,提问作者Gary Greenberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:00:05