Groovy:表示实际List的List的字符串

时间:2013-03-19 22:43:19

标签: groovy

Groovy中有没有办法用字符串创建列表?即我有一个字符串"[0,1]",我想将其转换为[0,1](以及实际的常规列表)以便操作。

字符串的值可能是二维的("[ [1], [2, 3]]"),但肯定它总是一个列表。

1 个答案:

答案 0 :(得分:3)

您可以使用Eval.me,但很明显,请注意评估任何旧字符串

def a = Eval.me( '[ 1, 2 ]' )

另一种选择可能是:

def a = new groovy.json.JsonSlurper().parseText( '[ 1, 2 ]' )

由于您在问题中提供的两个列表形式都是有效的Json: - )

性能

给出以下基准测试代码:

@Grab('com.googlecode.gbench:gbench:0.4.1-groovy-2.1') // v0.4.1 for Groovy 2.1
import groovy.json.JsonSlurper

def r = benchmark( measureCpuTime:false ) { 
  'eval' {
    def a = Eval.me( '[ 1, 2 ]' )
    assert a == [ 1, 2 ]
  }
  'json' {
    def a = new JsonSlurper().parseText( '[ 1, 2 ]' )
    assert a == [ 1, 2 ]
  }
}
r.prettyPrint()

我得到了输出:

eval  4661121
json     7257

所以走json路线要快得多; - )