将字符串转换为groovy中的map

时间:2014-02-12 05:44:57

标签: groovy

我是groovy的新手,这可能非常微不足道。我有一个字符串,其格式与groovy的地图一样(地图中也有地图)。

我想做的只是将字符串格式转换为groovy map。 我尝试了this但我的字符串太大而无法计算Eval.me。有没有其他方法可以做到这一点?

我的字符串格式有点像这样: -

[
    'item1':[
        [
            'subitem11':1, 
            'subitem21':'name', 
            'subitem31':'nametwo'
        ],
        [
            'subitem21':'1', 
            'subitem22':'name2'
        ],
        [
            'subitem31':'2', 
            'subitem32':'name3'
        ]
    ],
    'item2':'itemContent', 
    'item3':'itemContent3', 
    'item4':'itemContent4', 
    'item5':'itemContent5', 
    'item6':'itemContent6', 
    'item7':'itemContent7', 
    'item7':['subitem71', 'subitem72']
]

1 个答案:

答案 0 :(得分:5)

这可能不是一个简单明了的解决方案,但它可以起作用。

首先,关于“计算字符串太大”,Guilame在类似问题link中给出了一个很好的答案。(第一个答案)。他指出,脚本评估不适合大数据处理,你很快就会通过使用一些黑客攻击或优化来达到JVM限制。

您可以尝试拆分数据,但这也不是很好的解决方案。

您的Groovy格式可以解释为YAML。

因此,您可以使用YAML解析器库从该字符串中提取数据。

即:

@Grab( 'org.yaml:snakeyaml:1.13' ) 
import org.yaml.snakeyaml.Yaml

def data = new Yaml().load( string )

此外,有几个YAML-JSON converters。如果您可以通过这种方式准备数据,Groovy新的JSON解析器非常快。