[英]using eval in groovy
我如何在groovy中使用eval评估以下字符串:
{key1 = keyval,key2 = [listitem1,listitem2],key3 = keyval2}
所有列表项和keyval是一个字符串。
做Eval.me(“ {key1 = keyval,key2 = [listitem1,listitem2],key3 = keyval2}”)给我以下错误:
歧义表达式可以是无参数闭包表达式或隔离的开放代码块; 解决方案:添加一个显式的闭包参数列表,例如{it-> ...},或通过给它一个标签,例如在L处的L:{...},强制将其视为开放块。
我想获取HashMap
您可以通过翻译一些字符来解析该字符串,并编写自己的绑定以在Groovy尝试查找它们时返回变量名,如下所示:
class Evaluator extends Binding {
def parse( s ) {
GroovyShell shell = new GroovyShell( this );
shell.evaluate( s )
}
Object getVariable( String name ) { name }
}
def inStr = '{key1=keyval, key2=[listitem1, listitem2], key3=keyval2}'
def inObj = new Evaluator().parse( inStr.tr( '{}=', '[]:' ) )
println inObj
但这是一个非常脆弱的解决方案,以更友好的格式( 如@Stefan所建议的那样 )获取数据绝对是最好的方法...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.