使用Groovy脚本引擎 根据表达式求值 或 反向解析构造对象
2011-06-12 10:34
295 查看
假设有这么一个需求:外部传入一个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')
如果自己去解析并构造出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')
相关文章推荐
- 使用Groovy脚本引擎 根据表达式求值 或 反向解析构造对象
- 一种表达式语言的解析引擎JEXL简单使用
- Java中使用Groovy实现自定义表达式解析
- 使用Unity3d官方提供得精简版xml解析脚本Mono.xml
- 根据xsd使用xmlbean生成代码的ant脚本
- 使用Bash编写Linux Shell脚本-6.表达式
- 脚本引擎注册将要使用的类,属性,方法,函数
- 使用PHP写出一个正则表达式,过滤网页上的所有js脚本
- [SoapUI] 从上一个测试步骤获取ID list,通过Groovy脚本动态生成 Data Source 供后面的步骤使用
- makefile使用.lds链接脚本以及 $@ ,$^, $,< 解析【转】
- Selenium_IDE的基本使用及脚本解析
- PHP函数preg_match_all正则表达式的基本使用详细解析
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java) (转载)
- 【COCOS2DX-LUA 脚本开发之九】使用cocos2dx-LuaProxy便捷Lua项目快速使用cocos2dx引擎extensions扩展包
- Shell脚本------解析elf文件及awk基本使用
- 桟的使用之算术表达式求值
- 使用 SpiderMonkey 使 C++应用支持 JavaScript 脚本引擎
- JSP基础——分别使用表达式和脚本方式打印九九乘法表
- Tomcat-----Tomcat6使用三目表达式时解析错误
- [C#][固定格式网页解析]使用正则表达式处理网页的初步体会