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

假设有这么一个需求:外部传入一个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, 4, 2, ' x * y + z')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值