加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用Groovy脚本引擎 根据表达式求值 或 反向解析构造对象

发布时间:2020-12-14 17:03:10 所属栏目:大数据 来源:网络整理
导读:假设有这么一个需求:外部传入一个Map形式的字符串,如"[1:'A',2:'B']",现在要把这个字符串转换成map对象。 如果自己去解析并构造出map对象,显然很麻烦。 Groovy可以执行脚本,将一个脚本字符串传给GroovyShell,它再去sh.evaluate(expression). 所有我们

假设有这么一个需求:外部传入一个Map形式的字符串,如"[1:'A',2:'B']",现在要把这个字符串转换成map对象。

如果自己去解析并构造出map对象,显然很麻烦。

Groovy可以执行脚本,将一个脚本字符串传给GroovyShell,它再去sh.evaluate(expression).
所有我们也可以利用它来帮我们解析出map对象。
Map map = new GroovyShell().evaluate("[1:'A',2:'B']")

Groovy提供了一个帮助类Eval来方便地使用GroovyShell。可以用它来计算表达式的值(表达式不需要大量的绑定对象)

Map map = Eval.me("[1:'A',2:'B']")
Eval.me("""println "哈哈" """)

Eval还可以这么使用: assert 10 == Eval.me(' 2 * 4 + 2') assert 10 == Eval.me('x',2,' x * 4 + 2')??? //x是变量,现在x=2,表达式是“x * 4 + 2” assert 10 == Eval.x(2,' x * 4 + 2') assert 10 == Eval.xy(2,4,' x * y + 2') assert 10 == Eval.xyz(2,' x * y + z')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读