将字符串转换为groovy中的map

shr*_*iek 2 groovy

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

我想要做的只是将字符串格式转换为groovy map.我试过这个但是我的字符串太大了,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']
]
Run Code Online (Sandbox Code Playgroud)

Sea*_*ull 5

它可能不是一个简单或明确的解决方案,但它可以工作.

首先,关于"计算字符串太大",Guilame在类似的问题链接中给出了一个很好的答案.(第一个答案).他指出,脚本评估不适合大数据处理,并且您将很快通过使用一些黑客或优化来达到JVM限制.

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

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

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

即:

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

def data = new Yaml().load( string )
Run Code Online (Sandbox Code Playgroud)

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